javascript - 在同一个存储中可以有多个监听器中间件吗?

标签 javascript reactjs redux redux-toolkit redux-middleware

如果我使用 createListenerMiddleware 创建 2 个独立的中间件来处理不同的职责,那么与创建单个监听器中间件相比,这是否会产生显着的性能成本?他们之间的互动方式是否存在不良行为?

一个问题是,如果我调度 addListenerremoveListenerclearAllListeners,它们是否会到达两个中间件,或者被第一个中间件消耗在链中?

另一种方法是在自己的模块中创建一个共享监听器中间件,该中间件可以导入到其他模块中以添加监听器,这可能涵盖大多数用例,但如果我想传递不同的额外参数或不同的错误处理。

最佳答案

我创建了监听器中间件:)

您实际上应该在应用程序中只有一个监听器中间件实例,并且我真的想不出您想要拥有多个监听器中间件的充分理由实例。是的,添加/删除监听器操作肯定会由第一个看到它们的监听器中间件实例处理和停止,没有区别。

如果目标是拥有不依赖于导入相同中间件实例的单独监听器+效果定义,我建议尝试文档中显示的第三种文件组织方法,其中功能文件导出一个回调,该回调获取 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/

相关文章:

javascript - 理解 JavaScript 中的术语迭代器、回调、函数工厂

javascript - 使用 TensorFlow.js 对图像进行对象计数

javascript - "Run the packager with ` --clearCache` 标志在 React Native 中是什么意思?

javascript - chrome 加载react.js 出错

javascript - 我们可以在类中定义的 redux Action Creators 上使用 bindActionCreators() 吗?

javascript - Redux 在全局组件中处理域特定的操作

javascript - Bootstrap 3 轮播无法正确加载/显示

javascript - 检测或阻止从对象标记加载页面?

css - 如何从 Next.js 中的 css 模块导入样式表?

javascript - 从 redux-observable 史诗中访问状态