繁体   English   中英

是否可以通过调度单个redux操作来更新多个reducer?

[英]Possible to update multiple reducer by dispatching single redux action?

免责声明 :此问题针对特定的软件包reduxsauce

采取经典的redux动作,通过分派单个动作,它将流经所有化简器,如果我们想更新状态,我们会在合适的情况下捕获每个化简器中的类型

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;
}

想知道通过使用reduxsauce ,我们还能实现与上面演示的类似的东西吗? (发送单个动作并更新两个reducer)

是的你可以。

我创建了这个Snack示例来帮助您,但是要点是您必须配置reducer来侦听相同的操作。

Kinda像这样:

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更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM