2017-12-13 7 views
0

私は最近vuexで始まりました。vuexのモジュールの名前空間は正確に何ですか

公式docsがうまく説明して何モジュールがありますが、私は名前空間のモジュールで権利を理解している場合わかりません。

誰かがより良い方法で名前空間にいくつかの光を当てることができますか? なぜ/を使用するのですか?

非常に高く評価されています。

答えて

2

非常に大きな状態のオブジェクトを持つ大きなアプリを持っている場合は、それをmodulesに分けることがよくあります。

基本的には、状態をより小さな部分に分割することを意味します。注意点の一つは、それが同じ状態に統合されているので、あなたが例えばので、モジュールに同じメソッド名を使用できないことです。

moduleA { 
    actions:{ 
    save(){} 
    } 
} 

moduleB { 
    actions:{ 
    //this will throw an error that you have the same action defined twice 
    save(){} 
    } 
} 

だから、これを有効にするために、あなたが定義するオプションを持っていますモジュールは、名前空間として、その後、あなたは異なるモジュールで同じ方法で使用することができます。

moduleA { 
    actions:{ 
    save(){} 
    }, 
    namespaced: true 
} 

moduleB { 
    actions:{ 
    save(){} 
    }, 
    namespaced: true 
} 

をして、あなたはこのようにそれを呼び出す:

this.$store.dispatch('moduleA/save') 
this.$store.dispatch('moduleB/save') 

が、それは物事が複雑かもしれないことに注意してくださいビットゲッターが['moduleA/client']

の形になりましたので、あなたがmapGettermapActionsを使用しているのであれば、あなたが本当にする必要がある場合にのみ、それを使用しています。

0

私はvue.jsの専門家ではありませんが、ドキュメントで見ることができるように、名前空間はモジュールのgetters/actions/mutationsへのパスアクセスを変更するために使用できます。

デフォルトではnamespaced:falseすべてのゲッター、アクション、突然変異は異なるモジュールで利用できますので、異なるモジュールで同じゲッター/アクション/突然変異を使用するには、名前空間としてフラグを立てる必要があります。エラーがスローされます。

これは、getters/actions/mutationsを別々のパス(モジュールが登録されているパス)で整理するのに使います。これはゲッター/アクション/突然変異がどこに定義されているかをすぐに知ることができるため、大きなプロジェクトで非常に便利です。

hlh

関連する問題