Почему namespased: false не работает для меня - PullRequest
0 голосов
/ 25 марта 2020

Я видел похожие вопросы. Но я что-то теряю и не могу понять, почему это не работает в моем случае. У меня есть следующий модуль 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
    },
});

Итак, я хотел бы видеть свои свойства vuex после ...mapState(['...']). Я покажу вам компонент:

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 Ответ

1 голос
/ 26 марта 2020

Вы ничего не забыли, это всегда так - согласно Документам Vuex , только getters, setters and actions могут быть пространством имен (и, кстати, даже тогда они являются пространствами имен, они все равно будут присутствовать в глобальном объекте, но быть похожим на moduleName/action - user/getUserName, а не внутри объектов, таких как user.getUserName).

Однако state всегда для каждого модуля - поэтому, независимо от того, находится ли пространство имен или нет, оно будет находиться в своем собственном свойстве в глобальном объекте состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...