Как использовать модули без пространства имен и пространства имен одновременно в Vuex - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь получить состояние, состоящее из модулей пространства имен и глобального состояния. К сожалению, я могу получить доступ к глобальным действиям, но не могу получить свойства глобального состояния.

Если я пытаюсь использовать mapState в таком компоненте, как

computed: {
  ...mapState(['editMode']),
  ...mapState('address', ['addresses']),
}

У меня есть доступ к адреса, но режим редактирования всегда неопределен. Сопоставление действий работает безупречно и обновляет состояние в соответствии с Vuex Chrome Tool.

Но я заметил, что глобальное состояние отображается в его собственном «пространстве имен» «global». Поэтому я попытался отобразить, используя ... mapState ('global', ['editMode']), но получил ошибку, что пространство имен не существует.

Вот мой код:

index .ts

import Vue from 'vue';
import Vuex from 'vuex';
import address from './modules/address';
import global from './global';

Vue.use(Vuex);

export default new Vuex.Store({
  modules: {
    address,
    global,
  },
});

modules / address.ts

export default {
  namespaced: true,

  state: {
    addresses: [],
  },

  mutations: {
    ...
  },

  actions: {
    ...
  },
};

global.ts

export default {
  namespaced: false,

  state: {
    editMode: 0,
  },

  mutations: {
    SET_EDIT_MODE(state, value) {
      state.editMode = value;
    },
  },

  actions: {
    setEditMode({ commit }, editMode) {
      commit('SET_EDIT_MODE', editMode);
    },
  },
};

1 Ответ

1 голос
/ 02 апреля 2020

На состояние не влияет namespace. В некотором смысле это всегда становится пространством имен. Это значит, что у нас нет коллизий.

Чтобы получить доступ к состоянию из модуля, вам нужно получить подробный текст:

computed: {
 ...mapState({
   editMode: state => state.global.editMode
 }),
 ...mapState('address', ['addresses']),
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...