1

使用 reduxjs-toolkit,我定义了我的商店和中间件,如下所示:

const store = configureStore({
    reducer: rootReducer,
    middleware: [reduxWebsocketMiddleware, adamBrownMiddleware]
});

但是我只想将此中间件应用于某些减速器,而不是全部。具体来说,我想将 websocket 中间件应用到某些 reducer,而在其他情况下,我正在调用 API,并且不需要这个 websocket 中间件。

似乎添加另一个商店来执行此操作是一种反模式。

那么我怎样才能只为某些减速器应用中间件呢?

4

1 回答 1

3

您始终可以在中间件中检查action.type属性(例如,如果它以 开头"mySliceName/"),否则跳过中间件的其余部分。

由于您并没有真正举例说明您的中间件正在做什么以及为什么要限制它,因此实际上不可能给您更多的输入。

这可能看起来像这样:

const middleware = api => next => action => {
  if (!action.type.startsWith("myWebsocketSlice/") { return next(action); }
 // normal middleware code here
}
于 2020-10-26T17:06:22.947 回答