我有一个合乎逻辑的问题,是否应该对操作中的每个回调进行多个函数调用:
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还原器中,然后从那里调用下一个函数?
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
}
}第二种方法看上去就像反模式导致了意大利面代码.也许我错了?
发布于 2017-03-20 19:29:56
您正确地假设减速机中的调度操作是反模式的。在这个岗位上非常简洁地提到了原因。
来自Redux文档:
在减速机里你永远不应该做的事情: 改变其论点; 执行诸如API调用和路由转换之类的副作用; (调用非纯函数,例如Date.now()或Math.random() )。 ..。现在,请记住减速机必须是纯的。给定相同的参数,它应该计算下一个状态并返回它。没有惊喜。没有副作用。没有API调用。没有突变。只是计算一下。
您可以查看Redux Saga来处理异步流,以避免在第一个示例中显示的操作的回调地狱。
https://stackoverflow.com/questions/42911875
复制相似问题