如何在其他reducer中调度动作。
例如,我使用switch case LogsReducer
和ADD_LOG
创建reducer REMOVE_LOG
。代码:
const addLog = (text) => ({type: 'ADD_LOG', text});
const removeLog = (id) => ({type: 'REMOVE_LOG', id});
const logsReducer = (state = {}, action) => {
switch (action.type) {
case 'ADD_LOG':
// todo
case 'REMOVE_LOG':
// todo
default:
return state;
}
};
我将logsReducer
添加到combineReducers
。
要发送操作,我在mapDispatchToProps
内调用此方法。
dispatch(addLog('sample log'));
dispatch(removeLog(2);
还有问题。如何允许从日志缩减器外部发送消息。例如,来自其他reducer中的获取响应,例如。 contactReducer
?
答案 0 :(得分:1)
如何允许从日志缩减器外部发送消息。例如,来自其他reducer中的获取响应,例如。 contactReducer?
通常存在异步API调用或操作调度队列意味着表示/域逻辑由进程组成,因此需要进程管理器来解析该任务。
通用解决方案是redux-saga
,它结合了中间件和实时进程管理器。使用saga
时,组件只会通知逻辑发生的操作,然后saga执行API调用,生成新操作,甚至执行Optimistic updates。
此外,使用redux+saga
方法,您的Web应用程序自动成为全栈事件源应用程序:通过编写前端代码,您还将获得同构的后端代码(如果使用某些工具,如{{ 3}})
查看使用传奇https://github.com/reimagined/resolve和Infinite loop with redux-saga
的做法