Можно ли обновить несколько редукторов, отправив одно действие редукса? - PullRequest
0 голосов
/ 04 мая 2019

Отказ от ответственности : этот вопрос нацелен на конкретный пакет reduxsauce

Принимает классическое редукционное действие, отправляя одно действие, оно будет проходить через весь редуктор, и еслимы хотим обновить состояние, мы перехватываем тип в каждом редукторе по своему усмотрению

loginPage.js

this.props.memberLogin({ name: 'john' }); //{ type: MEMBER_LOGIN, payload: { name: 'john' } }

LoginAction.js

const memberLogin = member => {
  return { type: MEMBER_LOGIN, payload: member }
}

authReducer.js

const INITIAL_STATE = { isLoggedIn: false }

switch(state = INITIAL_STATE, action) {
  case MEMBER_LOGIN: return { ...state, isLoggedIn: true };
  default: return state;
}

memberReducer.js

const INITIAL_STATE = { member: null }

switch(state = INITIAL_STATE, action) {
  case MEMBER_LOGIN: return { ...state, member: action.payload };
  default: return state;
}

Wondering byиспользуя reduxsauce, можем ли мы достичь чего-то подобного, как показано выше?(отправить одно действие и обновить оба редуктора)

1 Ответ

1 голос
/ 04 мая 2019

Да, вы можете.

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

Вроде как так:

const reduceA = (state, action) => ({
  ...state,
  a: action.value,
});

const reduceB = (state, action) => ({
  ...state,
  b: action.value,
});

const { Types, Creators: actionCreators } = createActions({
  testAction: ['value'],
});


const HANDLERS_A = {
  [Types.TEST_ACTION]: reduceA,
};

const HANDLERS_B = {
  [Types.TEST_ACTION]: reduceB,
};

В этом примере значения обоих состояний редукторов A и B изменяются одним и тем же действием testAction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...