Javascript 如何在vuex js存储模块中设置全局变异

Javascript 如何在vuex js存储模块中设置全局变异,javascript,vuejs2,vuex,nuxt.js,Javascript,Vuejs2,Vuex,Nuxt.js,我需要能够从任何Vuex模块更改全局变量警报的状态 存储/索引.js: export const state = () => ({ alert: null }) export const mutations = { SET_ALERT: function (rootState, alert) { rootState.alert = alert } } export const actions = { setalert({commit}){

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

存储/索引.js

export const state = () => ({
    alert: null 
})
export const mutations = {
    SET_ALERT: function (rootState, alert) {
        rootState.alert = alert
    }
}
export const actions = {
    setalert({commit}){
        commit('SET_ALERT', 'warning')
    }
}
商店/child.js

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

我想调用
setalert
并将全局
store.state.alert
设置为
“警告”
。当前,
store.state.child.alert
被设置为
“warning”

您无法从另一个模块的内部访问vuex模块的状态

现在,您的
SET\u警报
正在引用
child
状态,因为它在
child
模块的范围内。将state对象的参数名更改为
rootState
不会更改它的名称

但是,您只需将
SET_ALERT
mutation移动到
index.js
文件中即可。突变仍然可以从
模块的
setalert
操作调用


如果要为模块使用名称空间(
namespace:true
),则需要在
commit
调用中明确说明要使用根模块,如下所示:

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

无效:我将突变
SET\u-ALERT
移动到
index.js
,现在我得到错误
[vuex]未知的局部突变类型:SET\u-ALERT,全局类型:articles/SET\u-ALERT
,有什么想法吗?你在使用名称空间吗?
commit('SET\u-ALERT',warning',{root:true})-太棒了!现在它工作了,谢谢!我不确定我是否理解你,我只是在
nuxt
+
express
中了解到这个
vuex
。你能给我一个链接到你发现
{root:true}
的文档吗?@bааСаааjаБааааааа107