[英]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.