Как использовать свойства предыдущего состояния в редукторе - PullRequest
1 голос
/ 27 марта 2019

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

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

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

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

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

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

1 Ответ

3 голосов
/ 27 марта 2019

Вы можете создать объект 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;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...