我正在创建一个侦听特定操作的Redux中间件。如果该操作类型符合我要查找的内容,我想发送另一个操作。这是因为我有不同的组件和一些共享功能,所以我想更新动作以具有相似类型,但不同的有效负载(术语),如下所示:
const updateActions = store => next => action => {
console.log(action);
if (action.type === 'UNIQUE_ACTION_A') {
return next({ type: 'NEW_ACTION', term: 'new_action_a_test' });
} else if (action.type === 'UNIQUE_ACTION_B') {
return next({
type: 'NEW_ACTION',
term: 'new_action_b_test'
});
}
return next(action);
};
const store = createStore(
rootReducer,
composeWithDevTools(applyMiddleware(thunk, updateActions))
);
我遇到的问题是这些行为没有调度。当我调度所有操作时,它们会继续正常运行,而不是调度新操作。好像调用这些操作的调用只是被忽略了。我在这里做错了什么?谢谢!
答案 0 :(得分:1)
中间件中的next
和dispatch
之间存在差异。 dispatch
将一个动作发送到调度链的最开头,这将导致它运行管道中的所有中间件。 next
在此之后将其发送到 next 中间件,最终发送到reducer。通过调用next({type : "NEW_ACTION"})
,您将其发送到下一个中间件,此中间件永远不会看到"NEW_ACTION"
。