Vuex mapActions、mapGetters 等...在同一个调用中混合命名空间和非命名空间操作/getter/mutations/state?

Mat*_*son 6 vue.js vue-component vuex vuejs2 vuetify.js

我只是很好奇是否有一种方法可以在您调用时混合命名空间和非命名空间操作,例如,...mapActions. 我只有一个足够大的模块来保证完整的模块封装和命名空间,所以有些动作是things/someAction,有些动作只是someOtherAction. 我目前正在这样映射:

...mapActions('nsACtions', ['nsOne', 'nsTwo']),
...mapActions('nonNsActionOne', 'nonNsActionTwo')
Run Code Online (Sandbox Code Playgroud)

但更愿意将所有内容合二为一mapActions。就像是:

...mapActions('nsACtions', 
    ['nsOne', 'nsTwo'],
    'nonNsActionOne', 
    'nonNsActionTwo')
Run Code Online (Sandbox Code Playgroud)

或者

...mapActions('nsACtions', 
    ['nsOne', 'nsTwo'],
    ['nonNsActionOne', 
    'nonNsActionTwo'])
Run Code Online (Sandbox Code Playgroud)

这些示例都不起作用,所以我很好奇是否有人解决了这个小难题。谢谢!

Mat*_*son 8

没关系。像这样想出来:

...mapActions({
  nsOne: 'namespaced/nsOne',
  nsTwo: 'namespace/nsTwo',
  nonNsOne: 'nonNsOne', 
  nonNsTwo: 'nonNsTwo'
})
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 5

尽管马特·拉尔森(Matt Larson)为自己找到了一个在很大程度上反映了同一件事的解决方案,但我还是添加了这个答案。您可以在计算值上使用多个 mapActions 来分隔命名空间,以提高清晰度

computed: {
     mapActions('namespace', ['nsOne','nsTwo']),
     mapActions(['nonNsOne','nonNsTwo']),
}
Run Code Online (Sandbox Code Playgroud)