Обновление редуктора с другого редуктора в реактивном - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу обновить состояние одного редуктора от другого редуктора в реактивном. Мой код такой:

Это действие.

export const doLike = payload => {
  // Recieving response from the server
  let updatedPost = {
    Id: 1,
    userId: 1,
    postId: payload.post._id,
    __v: 1,
    count: payload.type === 1 ? 10 : 1
  };

  return {
    type: SM_ACTION_LIKE,
    post: updatedPost
  };
};

Это smReducerкоторый принимает действие.

const initialState = {
  post: {}
};

const smReducer = (state = initialState, action) => {
  switch (action.type) {
    case SM_ACTION_LIKE:
      return {
        ...state,
        post: action.post
      };
      break;

    default:
      return state;
  }

  return state;
};

export default smReducer;

Теперь я хочу изменить массив записей mainFeedReducer отсюда.Мой mainFeedReducer это.Я хочу получить доступ к массиву сообщений mainFeedReducer из smReducer.

const initialState = Immutable({
  posts: [],
  featuredWorkouts: []
});

const mainfeedReducer = (state = initialState, action) => {
  switch (action.type) {
    case FETCH_MAIN_FEED:
      return {
        ...state,
        posts: action.mainFeedData.posts,
        featuredWorkouts: action.mainFeedData.featuredWorkouts
      };
      break;

    default:
      return state;
  }
};

Как мне этого добиться?

1 Ответ

0 голосов
/ 25 апреля 2018

Архитектура Redux вращается вокруг строгого однонаправленного потока данных .

. Правильный способ - спроектировать ваши редукторы таким образом, чтобы они обрабатывали больше данных.

Как упомянуто в документах

Если редуктор должен знать данные из другого среза состояния , форма дерева состояний может потребоваться реорганизовать , чтобы один редуктор обрабатывал больше данных .

Альтернативы

  • Вы можете рассмотреть возможность использования redux-thunk , поскольку внутренняя функция, которая получает два параметра return (dispatch, getState), имеет доступ к всей карте состояний .
  • Если у вас есть экземпляр вашего store объекта, то вы можете получить прямой доступ к состояниям, выполнив store.getState()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...