Назначение всего состояния Vuex

Я работаю с Nuxt и Vuex, и я пытаюсь назначить все состояние пространства имен определенному значению. Можно ли назначить все состояние? Есть другой способ иметь модули с пространством имен, но назначить одно значение для состояния с пространством имен?

Некоторые примеры мутаций, о которых я говорю

const mutations = {
  [SET_LOCATION](state, location) {
    state = { ...location }
  }
}

or

const mutations = {
  [SET_CURRENCY](state, currency) {
    switch(currency) {
      case 'MXN':
      case 'EUR':
        state = currency
        break
      default: 
        state = 'USD'
    }
  }
}

Но когда эти мутации выполняются, они не присваивают значение, я пытался присвоить значение, но он работает только тогда, когда я присваиваю новое значение свойству состояния пространства имен.


person Daniel Alessandro Aguilar    schedule 20.11.2020    source источник


Ответы (1)


но это работает только тогда, когда я присваиваю новое значение свойству namespaced-state

Это происходит не просто так. У Vue есть предостережения относительно реактивности. Из Документов

Vue не может обнаружить добавление или удаление свойств. Поскольку Vue выполняет процесс преобразования получателя / установщика во время инициализации экземпляра, свойство должно присутствовать в объекте данных, чтобы Vue преобразовал его и сделал реактивным.

Чтобы избежать этой проблемы, убедитесь, что вы объявили все свои ключи в объекте состояния при инициализации хранилища.

Например:


state = {locationState:null}
// Make the store with the state
const mutations = {
  [SET_LOCATION](state, location) {
    state.locationState = location 
  }
}

Сообщите мне, если это сработает для вас.

person Mark    schedule 21.11.2020