vanyahuk
@vanyahuk

Как вернуться к начальному состоянию редюсера в redux конкретного свойства?

Есть начальное состояние
const initialState = {
		filter_models: {
			adventure_state: null,
			type_id: null,
		}
}

после определенных действий свойство type_id изменилось, как откатиться назад к начальному состоянию только свойства type_id не затрагивая другие?
  • Вопрос задан
  • 295 просмотров
Решения вопроса 1
export default function Reducer(state = initialState, action) {
  switch (action.type) {
    case RESET_TYPE_ID:
      return {
        ...state,
        filter_models: {
          ...state.filter_models,
          type_id: null
        }
      };

P.S. Но в вашем случае это плохая идея, потому что делать сброс значения на каждый пустой фильтр это не очень эффективно. Как вариант можно полностью переписывать filter_models при каждом изменении фильтра изначально отбрасывая фильтры без значений. В этом может помочь pickBy из lodash:
const filters = _.pickBy(filterSet, _.identity);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
после определенных действий свойство type_id изменилось, как откатиться назад к начальному состоянию только свойства type_id не затрагивая другие?

Добавлю теории: выше, Yustas Alexu написал вам код, осталось только пояснить, что в нем, вы берете все то, что есть в state, и переписываете filter_models, в котором опять же берете все что было в state.filters_models и переписываете только одно свойство.
Итого: нужно разобраться как работает оператор ..., создайте объекты разной вложенности в песочнице, и на основе ответа от Yuxus попробуйте по изменять разные поля, не ломая остальное.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы