我需要能够从任何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"
。
答案 0 :(得分:3)
您无法从另一个模块的突变中访问vuex模块的状态。
现在,您的SET_ALERT
突变引用了child
状态,因为它位于child
模块的范围内。将状态对象的参数名称更改为rootState
不会改变它的内容。
但是,您只需将SET_ALERT
突变移到index.js
文件中即可。仍然可以通过child
模块setalert
操作调用此突变。
如果您正在为模块使用命名空间(namespace: true
),则需要明确说明在commit
调用中使用根模块,如下所示:
commit('SET_ALERT', 'warning', { root: true });