如何在模块vuex js store中设置全局变异

时间:2017-06-27 18:01:14

标签: javascript vuejs2 vuex nuxt.js

我需要能够从任何Vuex模块更改全局变量alert的状态。

商品/ 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并将全球store.state.alert设为"warning"。目前,store.state.child.alert已设置为"warning"

1 个答案:

答案 0 :(得分:3)

您无法从另一个模块的突变中访问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.