Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript redux saga根据UI组件状态有条件地订阅Worker_Javascript_Reactjs_Redux_React Redux_Redux Saga - Fatal编程技术网

Javascript redux saga根据UI组件状态有条件地订阅Worker

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按钮组件(
),它存在于基本UI组件
中。假设我在ApplicationBase中有子组件,这些子组件根据路径呈现,如:
HomePage
UserDetailPage
ProductsPage
ProductDetailPage
等。 在这些页面中可以包含任意数量的其他组件,如
UserEntity
ProductEntity
ProductEntityList

所有这些组件都应该能够实现自己的数据检索/显示逻辑

单击刷新按钮时,它会发送一个操作:
APP\u refresh
。我有一个redux传奇,关注这一行动,并做一些背景工作(网络电话):

函数*appRefreshWatcher(){
收益率(应用程序刷新、appRefreshWorker);
}

我的问题是,需要完成的后台工作取决于当前安装的子组件。我不想重新加载数据或更新未显示的实体

理想情况下,每个组件都能够监听
应用程序刷新
操作,并运行自己的刷新工作者传奇-但只有在安装时才可以。

如何仅“刷新”处于活动状态(已安装)的组件

您可以使用在存储中保存有关当前路线的数据


然后,您可以在
appRefreshWorker
中查看该数据,以有条件地刷新数据。

您是否看到了
react样板文件所采用的方法

您可以使用
withSaga
方法在组件旁边动态注入(和弹出)传奇。当一个组件安装或卸载时,这些传奇将被注入存储区并从存储区中弹出。这是一种类似于从
重新组合
中使用reducer
方法。回购的例子:

检查注入实现:。具体来说,
组件将在HOC上装载
组件将卸载
方法


我认为,通过这种函数式编程方法,您可以完成所需的任务。

感谢您的回复。该解决方案可以工作,但需要手动定义所有管线状态和组件组合。我正在寻找一个更灵活的解决方案,其中每个组件都可以独立于路由进行管理。理想情况下,您需要一个商店中活动组件的列表。如果不想显式定义路由/组件关系,则可以在装入子组件时从该子组件分派操作。然后将这些操作减少到活动组件的列表中。谢谢,这是我要做的事情,应该能够涵盖我的用例。