【发布时间】:2017-08-12 05:16:10
【问题描述】:
我有一个逻辑问题,我是否应该调用多个函数来响应动作中的每个回调:
export const myAction= () => (distaptch, getState) => {
callFunctionA(function(e){
if(e){
dispatch(eventA(e));
callFunctionB(function(e){
dispatch(eventB(e));
callFunctionC(function(e){
dispatch(eventC(e));
});
});
}
});
}
或者我可能想将这些调用移动到 redux reducer 并从那里调用每个 next 函数?
const reducer = (state={}, action) => {
switch (action.type) {
case 'EVENT_A':
callFunctionB(action.e);
return state;
case 'EVENT_B':
callFunctionC(action.e);
return state;
default:
return state
}
}
在我看来,第二种方法就像是导致意大利面条代码的反模式......也许我错了?
【问题讨论】:
-
“第二种方法在我看来像反模式”第一种方法看起来像回调地狱
-
@Daniel_L,你会考虑从 reducer 中调用函数吗?
-
我会考虑看看像 redux-saga 或 redux-observable 这样的库来处理转换异步操作,因为这样你就不会得到易于维护的代码。
-
@ArkadyB 我使用 thunk 并承诺调度操作
标签: javascript reactjs redux