Vuex |如何在模块操作中提交全局突变?

Posted

技术标签:

【中文标题】Vuex |如何在模块操作中提交全局突变?【英文标题】:Vuex | How to commit a global mutation in a module action? 【发布时间】:2017-11-20 22:54:12 【问题描述】:

我在命名空间模块中有一个动作和一个全局突变(即不在模块中)。我希望能够在动作中提交全局突变。

// Global mutation
export default 
  globalMutation (state, payload) 
    ...
  


// Action in a namespaced module
export default 
  namespaced: true,

  actions: 
    namespacedAction ( commit, dispatch, state , payload) 
      commit( type: 'globalMutation' )
    
  

当命名空间动作被调度时,Vuex 显示:

[vuex] unknown local mutation type: globalMutation, global type: module/globalMutation

是否有一个选项可以传递给commit 函数来调用这个全局突变?

【问题讨论】:

【参考方案1】:

看来我刚刚找到了使用 root: true 参数的方法。

commit('globalMutation', payload,  root: true )

如果模块是命名空间的,则使用全局路径:

commit('module/mutation', payload,  root: true )

【讨论】:

只想添加一些东西:如果 global 有“namespaced: true”,你必须这样做:commit('global/globalMutation', payload, root: true ) 更多信息在这里:vuex.vuejs.org/api/#commit( root: true 也适用于调度。)

以上是关于Vuex |如何在模块操作中提交全局突变?的主要内容,如果未能解决你的问题,请参考以下文章

在 Vuex 中不使用操作就提交突变是否很糟糕?

如何使用 .slice'd 数组修复 vuex 突变警告

vuex 未知本地变异类型:updateValue,全局类型:app/updateValue。突变不起作用

突变未提交状态 vuex - Nuxt

Vuex 突变和操作不起作用

有没有办法在其动作或突变中获取 nameSpaced vuex 模块的名称?