Как использовать свойства предыдущего состояния в reducer

#reactjs #redux

#reactjs #redux

Вопрос:

Я хочу увеличить adult свойство passenger объекта из моего хранилища

 const store = {
//...
passenger: {
    adult: 1,
    child: 0
  }
///...
}
  

В моем редукторе у меня есть

 if (action.type === actionTypes.ADD_ADULT) {
    return {
      ...state,
      adult: state.passenger.adult   1
    };
  }
  

но, конечно, я получаю ошибку «Не удается прочитать свойство ‘adult’ для undefined», потому что в официальной документации Redux говорится, что Redux впервые вызовет reducer с неопределенным состоянием. Есть ли способ использовать предыдущее состояние или я должен просто передать новое значение adult через action.payload ?

PS: Я использую combineReducers и preloadedState , если это как-то влияет.

Комментарии:

1. Можете ли вы поделиться своим полным кодом reducer.

Ответ №1:

Вы могли бы создать initialState объект, который вы используете в качестве значения по умолчанию для вашего состояния, чтобы у state.adult него было значение.

Пример

 const initialState = {
  adult: 0,
  child: 0
};
function reducer(state = initialState, action) {
  if (action.type === actionTypes.ADD_ADULT) {
    return {
      ...state,
      adult: state.adult   1
    };
  }

  // ...

  else {
    return state;
  }
}