Как я могу напрямую установить значение в состоянии VueX - PullRequest
0 голосов
/ 26 октября 2018

Я просто хочу изменить данные в состоянии VueX без передачи значения, выполнив следующий шаг: Действие> Мутация> Состояние, затем getData из состояния VueX в другом компоненте. Можно ли это сделать, или у кого-то есть другой лучший способ сделать значение отправки сarray to ... mapAction, пожалуйста, объясните мне,

На самом деле, я просто хочу отправить данные с массивом в другой компонент, который будет меняться каждый раз, когда пользователь выбирает флажок на компоненте Treevue, который я использовал.

Большое спасибо.

## FilterList.vue ##
export default {
  data() {
    return {
      listSelected: ['aa','bb','cc','...'],  // this value will mutate when user has selected checkbox
    }
  }
}

=================================================================
## store.js ##
export default new Vuex.Store({
  state = {
    dataSelected: [ ]
  },
  mutation = {
    FILTERSELECTED(state, payload) {
      state.selected = payload
    }
  },
  action = {
    hasSelected(context,param) {
      context.commit('FILTERSELECTED',param)
    }
  },
  getters = {
    getSelected: state => state.dataSelected,
  }
  
  strict: true
})

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете установить strict: false и изменить данные напрямую, но я бы не рекомендовал это.
Вы потеряете преимущество, которое предоставляет Vuex, я бы предпочел поделиться этим объектом за пределами Vuex.

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

this.tmpUser = JSON.parse(JSON.stringify(this.$store.state.user))

Этот tmpUser отключен от хранилища и не будет генерировать предупреждения (или обновления) при изменении его свойств.
Когда пользователь нажмет кнопку «Сохранить», я отправлю измененный объект обратно в магазин:

this.$store.dispatch("user/save", this.tmpUser)

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

Я также пишу действия, только когда требуется асинхронность (выборка / сохранение данных). Для операций синхронизации я пишу только мутации и использую помощник mapMutations или вызываю $store.commit("mutation") напрямую.

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