Vue の data の初期値について

updated: 2019/12/11

 

Vue@2.6.10

Vuex@3.1.1

 

あるdata, vuex stateプロパティ等の初期値をnullにしておくと

参照したvue syntaxで値は正しく取得されるがコンソールにnullを参照したことによるエラーが表示される。

""や{}等適当な値を初期値にセットしておくとコンソール上のエラーが表示されなくなる。

ネストされた値をsyntaxで参照されている場合は初期値も一段ネストさせて設定する。

 

例えば

data() {

  return {

    userData: null

  }

}

後からuserDataに値を挿入

getUserData(response) {

  this.userData = response

}

template内

<v-avatar :src="userData.avatar">

error 値は正しく取得されているがコンソールにCannot read property 'avatar' of nullとエラー

 

これを直すには

data() {

  return {

   userData: ""

  }

}

 

さらに、syntaxでもう一段ネストされている値が参照される場合、例えばtemplate内で

{{ userData.details.about }}

上記でもエラーが出る。

これを直すには

data() {

  return {

   userData: {details: ""}

  }

}

もう一段適当な値を初期値としてセットしておくとコンソール上のエラー表示がなくなる。

→ つまり、data を初期値nullにして後入れでオブジェクトごとぶっこむのではなく、あらかじめ設定したデータのJsonオブジェクトのプロパティに後入れデータとして値をひとつづつ入れていく。

 

空の初期値を設定しておくのが困難なケースや気持ち悪い場合、v-ifでレンダリングタイミングを調整することでエラー対応ができる。

<v-avatar v-if="userData" :src="userData.avatar">

 

参考:

Vuex: stateの取得