Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vuex createNamespacedHelpers不工作_Javascript_Ecmascript 6_Vue.js_Vuex - Fatal编程技术网

Javascript Vuex createNamespacedHelpers不工作

Javascript Vuex createNamespacedHelpers不工作,javascript,ecmascript-6,vue.js,vuex,Javascript,Ecmascript 6,Vue.js,Vuex,我正在构建一个包含多个模块的Vuex商店。 我想简单地定义和映射getter和操作的类型,这样我就可以在路径中使用自动模块名,而不是为所有方法调用$store.getter[“modulename/gettername”] 我发现我可以使用vuex库中的createNamespacedHelpers帮助器,但它不起作用,或者我的配置中缺少一些东西 这是我的namespace-helper.js文件 import { createNamespacedHelpers } from 'vuex'; i

我正在构建一个包含多个模块的Vuex商店。 我想简单地定义和映射getter和操作的类型,这样我就可以在路径中使用自动模块名,而不是为所有方法调用$store.getter[“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

我遗漏了什么吗?

您正在使用,因此您的代码片段

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
});
您使用的是,因此您的代码段

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
});

非常感谢。根据你的评论,我认为“…”实际上是一个扩展运算符,而不是声明中“其他内容”的占位符。我还更新了VisualStudio代码,现在它不认为这是一个错误。谢谢。根据你的评论,我认为“…”实际上是一个扩展运算符,而不是声明中“其他内容”的占位符。我还更新了VisualStudio代码,现在它不认为这是一个错误。