Redux 中间件不调度新操作



我正在创建一个侦听特定操作的 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))
);

我遇到的问题是这些操作没有调度。当我控制台.log所有操作时,它们将继续正常运行,而不是调度新操作。就好像调度这些操作的调用被忽略了一样。我在这里做错了什么?谢谢!

中间

件内部的nextdispatch是有区别的。 dispatch将一个操作发送到调度链的最开始,这将导致它通过管道中的所有中间件运行。 next将其发送到此中间件之后的下一个中间件,并最终发送到化简器。 通过调用 next({type : "NEW_ACTION"}) ,您将它发送到下一个中间件,并且该中间件将永远不会看到"NEW_ACTION"

另请参阅中间件中nextdispatch的 Redux 常见问题解答条目。

最新更新