我看到了类似的问题。但是我丢失了一些东西,无法理解为什么它对我而言不起作用。 我有以下vuex模块:
const root = {
namespaced: false,
state: {
advertisersOptions: [],
customersTypesOptions: [],
// ... more state props are here ...
},
mutations: {
setIsChoiceAllApps(state, isChoiceAllApps) {
state.isChoiceAllApps = isChoiceAllApps;
},
// and so on
},
getters: {
getErrorMessages: state => {
return state.errorMessages;
},
// and so on
},
actions: {},
};
export default root
我的商店创建方式如下:
import Vue from 'vue'
import * as Vuex from 'vuex'
import root from './modules/root'
Vue.use(Vuex);
export const store = new Vuex.Store({
modules: {
root
}
});
我将其包含在app.js
文件中:
const app = new Vue({
el: '#app',
store,
components: {
Multiselect
},
});
因此,我想在...mapState(['...'])
之后查看我的vuex属性。我将向您展示该组件:
export default {
data() {
return {
choiceAllApplications: false
}
},
methods: {
...mapActions(['updateApplicationsAction']),
disposeAllApps: function () {
this.$store.commit("setApplications", []);
},
},
computed: {
...mapState([
"advertisersOptions",
"advertisersSelected",
// and so on are here
]),
},
如您所见,我使用namespaced: false,
。我只想在全局范围内查看我的属性。但这是行不通的。我将在console.log
中制作mounted()
,这是转储文件:
如您所见,模块名称(root
)在这里。我忘了什么吗
答案 0 :(得分:1)
您什么都没忘记,它总是像这样-按照Vuex docs,只有getters, setters and actions
才需要命名空间(顺便说一句,即使它们是命名空间,它们仍然是存在于全局对象中,但类似于moduleName/action
-user/getUserName
,而不是像user.getUserName
这样的对象内部)。
然而state
始终是每个模块-因此,无论命名空间如何,它都将位于全局状态对象的自身属性中。