javascript – vuex中模块的命名空间究竟是什么

我最近开始使用vuex.

官方docs很好地解释了什么模块,但我不确定我是否理解模块中的命名空间.

任何人都能以更好的方式对命名空间有所了解吗?何时/为何使用它?

非常感激.

最佳答案
当你有一个非常大的状态对象的大应用程序时,你经常将它分成modules.

这基本上意味着你将状态分解成更小的部分.其中一个警告是,您不能对模块使用相同的方法名称,因为它已集成到同一状态,因此例如:

moduleA {
  actions:{
    save(){}
  }
}

moduleB {
  actions:{
    //this will throw an error that you have the same action defined twice
    save(){}
  }
}

因此,为了启用此功能,您可以选择将模块定义为命名空间,然后您可以在不同的模块中使用相同的方法:

moduleA {
  actions:{
    save(){}
  },
  namespaced: true
}

moduleB {
  actions:{  
    save(){}
  },
  namespaced: true
}

然后你这样称呼它:

this.$store.dispatch('moduleA/save')
this.$store.dispatch('moduleB/save')

请注意,如果你使用mapGetter或mapActions,它可能会使事情变得复杂,因为getter现在是[‘moduleA / client’]的形式

所以只有在你真的需要时才使用它.

转载注明原文:javascript – vuex中模块的命名空间究竟是什么 - 代码日志