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

Posted

技术标签:

【中文标题】Vuex mapActions、mapGetters 等...在同一个调用中混合命名空间和非命名空间操作/getters/mutations/state?【英文标题】:Vuex mapActions, mapGetters, etc... Mixing namespaced and non-namespace actions/getters/mutations/state in the same call? 【发布时间】:2019-06-06 17:37:27 【问题描述】:

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

...mapActions('nsACtions', ['nsOne', 'nsTwo']),
...mapActions('nonNsActionOne', 'nonNsActionTwo')

但更愿意将所有内容合并为一个mapActions。比如:

...mapActions('nsACtions', 
    ['nsOne', 'nsTwo'],
    'nonNsActionOne', 
    'nonNsActionTwo')

...mapActions('nsACtions', 
    ['nsOne', 'nsTwo'],
    ['nonNsActionOne', 
    'nonNsActionTwo'])

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

【问题讨论】:

【参考方案1】:

我已经添加了这个答案,尽管 Matt Larson 发现自己的解决方案在很大程度上反映了同样的事情。您可以在计算值上使用多个 mapAction 来分隔命名空间,以便更清晰

computed: 
     mapActions('namespace', ['nsOne','nsTwo']),
     mapActions(['nonNsOne','nonNsTwo']),

【讨论】:

【参考方案2】:

没关系。想出来是这样的:

...mapActions(
  nsOne: 'namespaced/nsOne',
  nsTwo: 'namespace/nsTwo',
  nonNsOne: 'nonNsOne', 
  nonNsTwo: 'nonNsTwo'
)

【讨论】:

以上是关于Vuex mapActions、mapGetters 等...在同一个调用中混合命名空间和非命名空间操作/getters/mutations/state?的主要内容,如果未能解决你的问题,请参考以下文章

vuex2中使用mapGetters/mapActions报错解决方法

Vuex中的mapState、mapMutations、mapActions、mapGetters的简单理解

vuex2中使用mapGetters/mapActions报错解决方法

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

关于mapState和mapMutations和mapGetters 和mapActions辅助函数的用法及作用-----mapState

vuex2中使用mapMutations/mapActions报错解决方法 BabelLoaderError: SyntaxError: Unexpected token