Javascript Vuex createNamespacedHelpers不工作
我正在构建一个包含多个模块的Vuex商店。 我想简单地定义和映射getter和操作的类型,这样我就可以在路径中使用自动模块名,而不是为所有方法调用$store.getter[“modulename/gettername”] 我发现我可以使用vuex库中的createNamespacedHelpers帮助器,但它不起作用,或者我的配置中缺少一些东西 这是我的namespace-helper.js文件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
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代码,现在它不认为这是一个错误。