【问题标题】:Vuex createNamespacedHelpers is not workingVuex createNamespacedHelpers 不起作用
【发布时间】:2018-01-23 16:25:31
【问题描述】:

我正在构建一个包含多个模块的 Vuex 商店。 我想轻松定义和映射 getter 和操作的类型,以便我可以在路径中使用自动模块名称,而不是为所有方法调用 $store.getters["modulename/gettername"]。

我发现我可以使用 vuex 库中的 createNamespacedHelpers 帮助程序,但它不起作用或我的配置中缺少某些内容。

这是我的 namespace-helper.js 文件

import { createNamespacedHelpers } from 'vuex';
import { getters, actions } from './types';

const { mapGetters, mapActions } = createNamespacedHelpers('modulename');

export default {
  computed: mapGetters([
    getters.getMethod1,
    getters.getMethod2
  ]),
  methods: mapActions([
    actions.actionMethod1,
    actions.actionMethod2
  ])
}

在我的 vue.js 中有

import Vue from 'vue';
import Vuex from 'vuex';
import store from './store/index';
import someModuleNameSpaceHelper from './store/modules/someModule/namespace-helper';

Vue.use(Vuex);

window.vueRoot = new Vue({
  el: '#vue-root',
  store,
  someModuleNameSpaceHelper ,
  computed: {

  }
});

我认为此时我可以访问 vuex getter,例如:vueRoot.getMethod1

我错过了什么吗?

【问题讨论】:

    标签: javascript ecmascript-6 vue.js vuex


    【解决方案1】:

    你使用的是object property value shorthand,所以你的代码是sn-p

    window.vueRoot = new Vue({
      el: '#vue-root',
      store,
      someModuleNameSpaceHelper ,
      computed: {
    
      }
    });
    

    等价于

    window.vueRoot = new Vue({
      el: '#vue-root',
      store,
      someModuleNameSpaceHelper: someModuleNameSpaceHelper,
      computed: {
    
      }
    });
    

    这就像在做

    window.vueRoot = new Vue({
      el: '#vue-root',
      store,
      someModuleNameSpaceHelper: {
        computed: {...}, // vue won't see this
        methods: {...}   // vue won't see this
      } ,
      computed: {
    
      }
    });
    

    要不要改成

    window.vueRoot = new Vue({
      el: '#vue-root',
      store,
      computed: someModuleNameSpaceHelper.computed,
      methods: someModuleNameSpaceHelper.methods
    });
    

    【讨论】:

    • 谢谢。根据您的评论,我发现 '...' 实际上是一个扩展运算符,而不是声明中“其他内容”的占位符。我还更新了 Visual Studio 代码,现在它没有将其视为错误。
    猜你喜欢
    • 2019-07-02
    • 2017-10-13
    • 2018-11-30
    • 2017-01-21
    • 2018-11-24
    • 2018-07-12
    • 2020-02-15
    • 2018-10-01
    • 2017-05-14
    相关资源
    最近更新 更多