Как мне объединить 2 редуктора, если один возвращает объект, а другой возвращает одно свойство объекта? - PullRequest
0 голосов
/ 22 июня 2019

Моя проблема в том, что у меня есть 2 редуктора, 1 возвращает объект "пользователь", а другой возвращает число, которое фактически является свойством (user.entries) объекта "пользователь".

Когда я попытался объединить эти 2 редуктора, я хочу, чтобы мой 2-й редуктор напрямую обновил свойство объекта User, но я не знаю, каким образом я мог бы это сделать.

Код чтоЯ сказал, как:

const userReducer = (state = {}, action) => {
  switch (action.type) {
    case 'USER_LOADED':
      return action.payload; // an "user" object
    default:
      return state;
  }
};

const entriesReducer = (state = null, action) => {
  switch (action.type) {
    case 'ADD_ENTRIES':
      return action.payload; // a number
    default:
      return state;
  }
};

export default combineReducers({
  user: userReducer,
  user.entries: entriesReducer // i know this is not correct...
});

1 Ответ

0 голосов
/ 22 июня 2019

Структура неверна, вы должны использовать combReducers только для братьев и сестер. Здесь записи являются дочерним свойством пользователя. Лучше напиши оба вместе вот так.

    const userReducer = (state = {}, action) => {
     switch (action.type) {
       case 'USER_LOADED':
         return action.payload; // an "user" object
       case 'ADD_ENTRIES':
           return {...state, entries:action.payload};
       default:
         return state;
     }

    };

   export default combineReducers({
     user: userReducer, 
   });
...