小问题:
我可以从内部调用减速器吗? 假设我想从ACTION_2调用ACTION_1,这可能吗?
const reducer = (state, action) => {
switch (action.type) {
case 'ACTION_1':
return {
...state,
//......
}
break;
case 'ACTION_2':
var newState = {
...state,
//.......
}
//I would like to call ACTION_1 here, and pass newState to it. Is it possible ?
break;
default:
throw new Error();
}
};
答案 0 :(得分:0)
几种方法
case 'ACTION_2':
// do something
dispatch({ type: 'ACTION_1', payload })
ACTION_1
的主体提取为单独的函数,然后在两个函数上同时使用case 'ACTION_1':
return reduceACTION_1(...)
case 'ACTION_2':
return reduceACTION_1(...)
switch
语句更改为if if (action.type === 'ACTION_1' || action.type === 'ACTION_2') {
// do something
}
但是,您有一个奇怪的用例。您可能会误解如何使用API来实现所需的功能。
答案 1 :(得分:0)
我建议您在调用some Action
产生副作用之后再调用first Action
因此您可以明确地说,当我得到Action2
时,我需要开除Action1
作为该动作的副作用。
有用的副作用库,用于redux,并且用于侦听所有传入的动作,并且仅执行Action2
,因此您可以使用side effect
库中的redux-saga
。
您需要了解一些有关生成器以及库如何工作的知识,但是实现您想要的东西非常好。