Reactjs react-立即将DataSet1和DataSet2存储到Redux存储,其中DataSet2是从DataSet1派生的

Reactjs react-立即将DataSet1和DataSet2存储到Redux存储,其中DataSet2是从DataSet1派生的,reactjs,react-redux,reselect,Reactjs,React Redux,Reselect,抱歉,如果有人问类似的问题,但我在多个动作调度中发现了这些问题,并重新使用redux批处理订阅。那不是我想要的 我需要制作一个与下图类似的仪表板 它使用三个来源——数据集1用户添加的金额、数据集2和数据集3 数据集2和数据集3源自数据集1,即使用UTIL/函数对数据集1进行某些计算 任何时候DataSet1发生变化,用户添加新的金额,编辑或删除它DataSet2和DataSet3都应该重新计算,仪表板应该立即完全更新 我试图设计它,以避免重复的重新计算和循环重新渲染 我正在考虑用Redux Th

抱歉,如果有人问类似的问题,但我在多个动作调度中发现了这些问题,并重新使用redux批处理订阅。那不是我想要的

我需要制作一个与下图类似的仪表板

它使用三个来源——数据集1用户添加的金额、数据集2和数据集3

数据集2和数据集3源自数据集1,即使用UTIL/函数对数据集1进行某些计算

任何时候DataSet1发生变化,用户添加新的金额,编辑或删除它DataSet2和DataSet3都应该重新计算,仪表板应该立即完全更新

我试图设计它,以避免重复的重新计算和循环重新渲染

我正在考虑用Redux Thunk做这件事

做类似任务的反应方式是什么

谢谢大家!

编辑:
删除了不必要的细节,在标签中添加了重新选择欢迎反应和重新使用-当你掌握窍门时,这真是太棒了

我假定您正在使用react-redux包来处理react和redux之间的绑定。这个包提供了一个名为Provider的类,您可以将应用程序包装到该类中。提供者做了几件事,但其中一件大事是订阅存储并在存储更改时触发重新渲染

正如@zzbov所提到的,派生值不应添加到存储中。为此,我们使用选择器。在您的情况下,这意味着DataSet1存在于存储中,DataSet2和DataSet2都存在于存储中 数据集3将由选择器计算。为了说明这一点,以下是用户更改数据集1时的事件流:

用户更改数据集1,这是您在mapDispatchToProps中定义的函数,用于在存储上调度操作。 减速器运行,生成一个新的状态对象。 调用存储的所有订阅者并将其传递给新的状态对象(在本例中为Provider)。 提供程序触发组件的高效重新呈现。我的意思是,它检查组件在mapStateToProps中选择的状态块是否已更改。 负责呈现DataSet2和DataSet3的组件从存储中选择DataSet1,并动态派生DataSet2和DataSet3,然后将它们传递给各自的组件。 如果不希望每次更改存储时都重新呈现DataSet2和DataSet3组件,请使用库。重新选择缓存派生值,从而避免虚假的重新渲染。当状态更改时,重新选择检查其输入值是否已更改,如果已更改,则重新计算输出。然后,您的组件从“重新选择”中选择,而不是直接从“状态”对象中选择


希望这能有所帮助。祝你好运

不应存储派生状态。您可以使用备忘录来避免重发。您可能应该看看“重新选择”。@zzzzBov非常感谢您。你是一个提供超短但非常有用评论的大师。重新选择现在效果很好-我现在在所有选择器上都实现了它。