2017-11-23 18 views
1

私はVueJS-application initの前に一度ページにロードされたデータを持っています。このデータはhtml-pageがリロードされない間は変更されません(SPAではなく従来のCGIアプリケーション)。データ例:Vuexに非反応性データを保存する方法は?

const nonReactiveObjectWithSomeNestedData = { 
    a: 'a', 
    b: { 
    bb: 'bb', 
    cc: { ccc: 'ccc' }, 
    dd: ['dd1', 'dd2'] 
    } 
} 

このデータは、いくつかのvueコンポーネントで使用しています。このデータをVuex名前空間モジュールに格納し、異なるVueコンポーネントに対して同じ機能をラップするためにVuex-gettersを使用すると便利です。このデータをvuexの中に保存する方法はありますか?state(反応は不要ですが)vuex-moduleのゲッターからアクセスする能力はありますか?

PS。現在、私は非反応性データを格納していますinside vue-instanceメソッドですが、これでは不十分です(2つの独立したルートコンポーネントからのデータへのより多くのグローバルアクセスが必要です)。

答えて

2

ストアに追加する前に、オブジェクトをフリーズ:

Object.freeze(nonReactiveObjectWithSomeNestedData) 

Vueが凍結されたオブジェクトが反応することはありません。

注:それはVuex変異/行動に出る前に、あなたがオブジェクトをフリーズする必要があります

this.$store.dispatch('moduleName/setNonReactiveObject', 
    Object.freeze(nonReactiveObjectWithSomeNestedData)); 

突然変異関数内のペイロード・パラメータはすでに反応性になります。

+1

エレガントな作業ソリューションありがとうございます) – hedin

関連する問題