如果我使用 createListenerMiddleware
创建 2 个独立的中间件来处理不同的职责,那么与创建单个监听器中间件相比,这是否会产生显着的性能成本?他们之间的互动方式是否存在不良行为?
一个问题是,如果我调度 addListener
、removeListener
或 clearAllListeners
,它们是否会到达两个中间件,或者被第一个中间件消耗在链中?
另一种方法是在自己的模块中创建一个共享监听器中间件,该中间件可以导入到其他模块中以添加监听器,这可能涵盖大多数用例,但如果我想传递不同的额外参数或不同的错误处理。
最佳答案
我创建了监听器中间件:)
您实际上应该在应用程序中只有一个监听器中间件实例,并且我真的想不出您想要拥有多个监听器中间件的充分理由实例。是的,添加/删除监听器操作肯定会由第一个看到它们的监听器中间件实例处理和停止,没有区别。
如果目标是拥有不依赖于导入相同中间件实例的单独监听器+效果定义,我建议尝试文档中显示的第三种文件组织方法,其中功能文件导出一个回调,该回调获取 startListening
作为参数:
// feature1Slice.ts
import type { AppStartListening } from '../../app/listenerMiddleware'
const feature1Slice = createSlice(/* */)
const { action1 } = feature1Slice.actions
export default feature1Slice.reducer
export const addFeature1Listeners = (startListening: AppStartListening) => {
startListening({
actionCreator: action1,
effect: () => {},
})
}
关于javascript - 在同一个存储中可以有多个监听器中间件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74829877/