Vuexでstateのデータを初期化する方法

動的にstateのプロパティを設定したいことは多々あります。

ただし、Vue.jsは最初に宣言しておかなければリアクティブになりません。

データの設定をする3つの方法書いてみたいと思います。

すべて列記しておく

一番シンプルです。
全く動的ではありませんが、一番最初に思いつく方法でしょう。

const state = {
  somethingData: [
      'data1', 'data2'
    ]
} 

配列だけ作っておく

先に配列だけ作っておき、どこかのタイミングでcommitで値をセットします。

メリットとしては、初期化のタイミングを決められることです。

逆にデメリットとして、初期化の処理をどこかで呼び出さなければなりません。

const state = {
  somethingData: []
} 

const mutations = {
  initSomethingData (state, data) {
      for (let i = 0; i < data.length; i++) {
          state.somethingData.push(data[i])
        }
    }
}

即時関数を使う

jsonなどの外部のデータに頼る場合は即時関数が便利です。

const state = {
  somethingData: (function () {
      return require('somethinData.json')
    }())
}

可読性が下がると思うのであれば、変数に入れ直すといいかもしれません。

let initSomethingData = function () {
    return require('somethinData.json')
}

const state = {
  somethingData: initSometingData()
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です