Как очистить объект состояния модуля хранилища Vuex? - PullRequest
0 голосов
/ 12 марта 2020

Как полностью очистить объект состояния модуля хранилища Vuex? Я знаю, как удалить отдельное свойство объекта состояния, например, Vue.delete(state.slidesList, 'slide1'), но я хочу полностью очистить объект состояния (не удалять сам объект) без потери реактивности на самом объекте, когда отдельные свойства удалено (с помощью Vue.delete) удаляет реактивные геттеры и сеттеры, я полагаю, пожалуйста, исправьте, если это не так.

Имеет ли непосредственная установка state.slideList = {} пустоту объекта, оставаясь при этом реактивным? если да, то подразумевается, что state.slideList = {fname: 'Appu' } - это способ перезаписать объект, не опустошая объект (если цель состоит в том, чтобы полностью перезаписать объект другим объектом, а не очистить и перезаписать в нем).

Если нет, то как правильно перезаписать объект состояния другим новым непустым объектом.

Спасибо

Ответы [ 3 ]

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

set добавляет свойство к объекту reactive, гарантируя, что новое свойство также является реактивным, поэтому запускает обновления просмотра. Это необходимо использовать для добавления новых свойств в реактивные объекты, так как Vue не может обнаружить нормальные добавления свойств. do c

модуль. js

import Vue from 'vue'

const initialState = {
 foo: {},
 bar: {},
 // ...
}

const state = {...initialState}

const mutations = { // To reset a state
 RESET_FOO (state) {
  Vue.set(state, 'foo', initialState.foo)
 },

 UPDATE_FOO (state, payload) { // To update the state
  Vue.set(state, 'foo', payload)
 },

 UPDATE_IN_FOO (state, { key, value }) { // To update a key in a state
  Vue.set(state.foo, key, value)
 },

 RESET_MODULE (state) { // To reset the entire module
  Object.assign(state, initialState)
 }
}
0 голосов
/ 19 марта 2020

Vuex имеет метод replaceState, который заменяет состояние root магазина.

0 голосов
/ 15 марта 2020

Создать мутацию, которая сбрасывает состояние. Затем сбросьте состояние с помощью значения по умолчанию, например:

Object.assign(state, newState)
...