Задать вопрос
vanyahuk
@vanyahuk

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

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

после определенных действий свойство type_id изменилось, как откатиться назад к начальному состоянию только свойства type_id не затрагивая другие?
  • Вопрос задан
  • 309 просмотров
Подписаться 1 Средний 7 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 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 попробуйте по изменять разные поля, не ломая остальное.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽