2017-06-27 8 views
3

グローバル変数alertの状態をどのVuexモジュールからでも変更できるようにする必要があります。モジュールvuex jsストアでグローバルな変異を設定する方法

店/ index.js

export const state =() => ({ 
    alert: null 
}) 

店/ child.js

export const mutations = { 
    SET_ALERT: function (rootState, alert) { 
     rootState.alert = alert 
    } 
} 
export const actions = { 
    setalert({commit}){ 
     commit('SET_ALERT', 'warning') 
    } 
} 

私はsetalertを呼び出し、"warning"にグローバルstore.state.alertを設定します。現在、store.state.child.alert"warning"に設定されています。

答えて

2

他のモジュールの突然変異の中からvuexモジュールの状態にアクセスすることはできません。

今すぐSET_ALERT突然変異はchildの状態を参照しています。childの範囲内にあるからです。状態オブジェクトのパラメータ名をrootStateに変更しても、それは何も変更されません。

しかし、SET_ALERT変異をindex.jsファイルに移動するだけで簡単に変更できます。突然変異は、childモジュールのsetalertアクションから依然として呼び出すことができます。


あなたはモジュール(namespace: true)のための名前空間を使用している場合は、あなたがそうのような、明示的commit呼び出しでルートモジュールを使用すると言うする必要があります。

commit('SET_ALERT', 'warning', { root: true }); 

Here's the documentation for Vuex Modules.

+0

ありません仕事:私は 'SET_ALERT'を' index.js'に移動しましたが、エラー '[vuex]未知のローカル突然変異のタイプ:SET_ALERT、グローバルタイプ:articles/SET_ALERT'、任意のアイデア? –

+0

名前空間を使用していますか? – thanksd

+0

'コミット( 'SET_ALERT'、 '警告'、{ルート:真});' - それは素晴らしい!今、ITは働いて、ありがとう!私はあなたを理解しているかどうかはわかりません。私はこの「vuex」を 'nuxt' +' express'で学ぶだけです。 –

関連する問題