Redux 如何有选择地将中间件应用于Reducer?

Redux 如何有选择地将中间件应用于Reducer?,redux,redux-toolkit,redux-middleware,Redux,Redux Toolkit,Redux Middleware,使用reduxjs工具包,我定义了我的存储和中间件,如下所示: const store = configureStore({ reducer: rootReducer, middleware: [reduxWebsocketMiddleware, adamBrownMiddleware] }); 但是,我只想将此中间件应用于某些还原程序,而不是所有还原程序。具体地说,我想将websocket中间件应用于某些简化程序,而在其他简化程序中,我调用的是API,这个websocket中

使用reduxjs工具包,我定义了我的存储和中间件,如下所示:

const store = configureStore({
    reducer: rootReducer,
    middleware: [reduxWebsocketMiddleware, adamBrownMiddleware]
});
但是,我只想将此中间件应用于某些还原程序,而不是所有还原程序。具体地说,我想将websocket中间件应用于某些简化程序,而在其他简化程序中,我调用的是API,这个websocket中间件不是必需的

似乎增加另一家商店来做这件事是一种反模式


那么,如何仅对某些简化程序应用中间件呢?

您可以在中间件中检查
操作。键入
属性(例如,如果它以
“mySliceName/”
开头),否则跳过中间件的其余部分

由于您没有给出一个示例,说明您的中间件正在做什么以及为什么要限制它,因此不可能提供更多的输入

这可能是这样的:

const store = configureStore({
    reducer: rootReducer,
    middleware: [reduxWebsocketMiddleware, adamBrownMiddleware]
});
const中间件=api=>next=>action=>{
如果(!action.type.startsWith(“myWebsocketSlice/”){返回下一步(操作);}
//这里是普通的中间件代码
}

您可以始终在中间件中检查
操作。键入
属性(例如,如果它以
“mySliceName/”
开头),否则跳过中间件的其余部分

由于您没有给出一个示例,说明您的中间件正在做什么以及为什么要限制它,因此不可能提供更多的输入

这可能是这样的:

const store = configureStore({
    reducer: rootReducer,
    middleware: [reduxWebsocketMiddleware, adamBrownMiddleware]
});
const中间件=api=>next=>action=>{
如果(!action.type.startsWith(“myWebsocketSlice/”){返回下一步(操作);}
//这里是普通的中间件代码
}

我更新了问题以包含原因。主要是因为我不想将websocket中间件应用于所有内容。我在回答中添加了一个示例。只需检查操作类型。如果
不影响任何性能,那么实际上所有中间件都是这样工作的。此外,正如Mark正确提到的:中间件应用于o操作,而不是还原。我更新了问题以包括原因。主要是因为我不想将websocket中间件应用于所有内容。我在回答中添加了一个示例。只需检查操作类型。如果操作类型不影响任何性能,则实际上所有中间件都是这样工作的。此外,正如Mark正确提到的:middleware适用于操作,而不是还原器。不清楚您是否正在重新调整schleem的用途,因此可能需要检查Tothe问题陈述是否听起来不正确。中间件不“适用于还原器”.Middleware在
分派
周围形成一个管道,然后分派的操作最终到达根缩减器。您能否提供进一步的示例,说明您特别想要做什么?不清楚您是否正在重新调整schleem的用途,因此可能需要检查tooThe问题陈述听起来是否正确。Middleware没有“应用于缩减器”。中间件围绕
分派
,形成一个管道,然后分派的操作最终在根缩减器处结束。您能否提供您特别想要做的更多示例?