Vuex createNamespacedHelpers 不工作
Vuex createNamespacedHelpers is not working
我正在构建一个包含多个模块的 Vuex 商店。
我想轻松定义和映射 getter 和操作的类型,以便我可以在路径中使用自动模块名称,而不是为所有方法调用 $store.getters["modulename/gettername"]。
我发现我可以使用 vuex 库中的 createNamespacedHelpers 助手,但它不起作用或者我的配置中缺少某些东西。
这是我的命名空间-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
我是不是漏掉了什么?
您使用的是 object property value shorthand,因此您的代码片段
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
});
我正在构建一个包含多个模块的 Vuex 商店。 我想轻松定义和映射 getter 和操作的类型,以便我可以在路径中使用自动模块名称,而不是为所有方法调用 $store.getters["modulename/gettername"]。
我发现我可以使用 vuex 库中的 createNamespacedHelpers 助手,但它不起作用或者我的配置中缺少某些东西。
这是我的命名空间-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
我是不是漏掉了什么?
您使用的是 object property value shorthand,因此您的代码片段
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
});