Javascript redux saga根据UI组件状态有条件地订阅Worker
我有一个全局通用UI按钮组件(Javascript redux saga根据UI组件状态有条件地订阅Worker,javascript,reactjs,redux,react-redux,redux-saga,Javascript,Reactjs,Redux,React Redux,Redux Saga,我有一个全局通用UI按钮组件(),它存在于基本UI组件中。假设我在ApplicationBase中有子组件,这些子组件根据路径呈现,如:HomePage、UserDetailPage、ProductsPage和ProductDetailPage等。 在这些页面中可以包含任意数量的其他组件,如UserEntity、ProductEntity、ProductEntityList等 所有这些组件都应该能够实现自己的数据检索/显示逻辑 单击刷新按钮时,它会发送一个操作:APP\u refresh。我有一
),它存在于基本UI组件
中。假设我在ApplicationBase中有子组件,这些子组件根据路径呈现,如:HomePage
、UserDetailPage
、ProductsPage
和ProductDetailPage
等。
在这些页面中可以包含任意数量的其他组件,如UserEntity
、ProductEntity
、ProductEntityList
等
所有这些组件都应该能够实现自己的数据检索/显示逻辑
单击刷新按钮时,它会发送一个操作:APP\u refresh
。我有一个redux传奇,关注这一行动,并做一些背景工作(网络电话):
函数*appRefreshWatcher(){
收益率(应用程序刷新、appRefreshWorker);
}
我的问题是,需要完成的后台工作取决于当前安装的子组件。我不想重新加载数据或更新未显示的实体
理想情况下,每个组件都能够监听应用程序刷新
操作,并运行自己的刷新工作者传奇-但只有在安装时才可以。
如何仅“刷新”处于活动状态(已安装)的组件 您可以使用在存储中保存有关当前路线的数据
然后,您可以在
appRefreshWorker
中查看该数据,以有条件地刷新数据。您是否看到了react样板文件所采用的方法
您可以使用withSaga
方法在组件旁边动态注入(和弹出)传奇。当一个组件安装或卸载时,这些传奇将被注入存储区并从存储区中弹出。这是一种类似于从重新组合中使用reducer
的方法。回购的例子:
检查注入实现:。具体来说,组件将在HOC上装载
和组件将卸载
方法
我认为,通过这种函数式编程方法,您可以完成所需的任务。感谢您的回复。该解决方案可以工作,但需要手动定义所有管线状态和组件组合。我正在寻找一个更灵活的解决方案,其中每个组件都可以独立于路由进行管理。理想情况下,您需要一个商店中活动组件的列表。如果不想显式定义路由/组件关系,则可以在装入子组件时从该子组件分派操作。然后将这些操作减少到活动组件的列表中。谢谢,这是我要做的事情,应该能够涵盖我的用例。