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

daolsyd0  于 2023-05-18  发布在  Vue.js
关注(0)|答案(3)|浏览(193)

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

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

但更优选将所有组合成一个mapActions。类似于:

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

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

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

wgmfuz8q

wgmfuz8q1#

算了。我是这么想的:

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

v8wbuo2f2#

我已经添加了这个答案,即使马特拉森已经找到了一个解决方案,这在很大程度上反映了同样的事情。您可以在计算值上使用多个mapActions来分隔命名空间,以获得更大的清晰度

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

nfg76nw03#

在我的例子中,每当我执行CRUD时,我也会创建状态,动作,getter默认名称,并添加前缀以重用代码,如果我需要复制它,创建一个crud屏幕,一切都准备好了,我只需更改它。所以,Action和Getters的名字是一样的,我需要在这里这样做。

methods: {
...mapActions('especialidades', ['actGetList', 'actInsert', 'actUpdate']),
...mapActions('profissionais', { profActionList: 'actGetList' }),
...mapActions('convenios', { convActionList: 'actGetList' }),
...mapActions('especialidades', { especActionList: 'actGetList' }),

相关问题