【发布时间】:2018-05-07 17:51:38
【问题描述】:
如何在其他 reducer 中调度操作。
例如,我使用开关盒ADD_LOG 和REMOVE_LOG 创建减速器LogsReducer。代码:
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);
还有这里的问题。如何允许从日志减速器外部发送消息。例如来自其他减速器中的获取响应,例如。 contactReducer?
【问题讨论】:
-
所有action都发送给所有reducer,所以如果
action.type是ADD_LOG,contactReducer也可以switch就可以了。 -
您必须问自己的唯一问题是您的操作是否必须按特定顺序运行,如果不是,那么@DavinTryon 他的答案就是您需要的,如果它们确实必须按顺序运行一定的顺序,那么你将需要某种中间件
-
是的,但是contactReducer 是一个不同的reducer。在
switch中没有这种情况。你知道,我想记录用户事件并将其推送到键logs(logsReducer) -
@icepickle Ohhh 也许中间件是一个答案,我检查一下
-
但是,如果他们彼此之间没有任何关系,那么您不应该在调度程序中处理日志吗?我不明白减速器如何帮助你?您可以添加要记录的内容以及要记录的位置吗?也许创建一个包装调度程序的高阶函数可能会更好?