为什么要命名:false对我不起作用

时间:2020-03-25 20:53:52

标签: javascript vue.js vuex

我看到了类似的问题。但是我丢失了一些东西,无法理解为什么它对我而言不起作用。 我有以下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(),这是转储文件:

enter image description here

如您所见,模块名称(root)在这里。我忘了什么吗

1 个答案:

答案 0 :(得分:1)

您什么都没忘记,它总是像这样-按照Vuex docs,只有getters, setters and actions才需要命名空间(顺便说一句,即使它们是命名空间,它们仍然是存在于全局对象中,但类似于moduleName/action-user/getUserName,而不是像user.getUserName这样的对象内部)。

然而state始终是每个模块-因此,无论命名空间如何,它都将位于全局状态对象的自身属性中。

相关问题