Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Reactjs 使用redux,如何避免重新计算复杂页面的组件状态?_Reactjs_Redux - Fatal编程技术网

Reactjs 使用redux,如何避免重新计算复杂页面的组件状态?

Reactjs 使用redux,如何避免重新计算复杂页面的组件状态?,reactjs,redux,Reactjs,Redux,假设一个复杂组件订阅了redux存储。第一次装入组件时,我们从存储中聚合大量数据,并创建一个“ModelView”对象 然后,假设这个组件收到一个事件来更新自己,因为有一个新的状态。渲染方法似乎需要重新聚合存储区中的所有数据,以了解是否存在差异。也就是说,我们无法进行简单的比较,因为ModelView对象与存储中的对象不同 您可能会问“为什么是ModelView”,为什么不直接从render()中的存储读取数据。对于简单页面来说,这是一种很好的方法,但是对于复杂页面来说,延迟是显而易见的,这是不

假设一个复杂组件订阅了redux存储。第一次装入组件时,我们从存储中聚合大量数据,并创建一个“ModelView”对象

然后,假设这个组件收到一个事件来更新自己,因为有一个新的状态。渲染方法似乎需要重新聚合存储区中的所有数据,以了解是否存在差异。也就是说,我们无法进行简单的比较,因为ModelView对象与存储中的对象不同

您可能会问“为什么是ModelView”,为什么不直接从render()中的存储读取数据。对于简单页面来说,这是一种很好的方法,但是对于复杂页面来说,延迟是显而易见的,这是不可能的


此外,视图可能具有与存储不同的内部状态。例如,商店中可能已经更新了一些任务,但我们不想更改UI,因为这会让用户感到困惑。。例如,我们宁愿显示“单击以查看新更改”按钮。一种方法是把所有东西都储存在商店里。。模型视图和正常状态。。但这不是过分了吗?或者换言之,ModelView不应该存储在组件本身中吗?

是一个配方,描述了如何以可组合的方式从Redux存储中派生出一个记忆化的“视图模型”。

您看过“重新选择”了吗?这是为了解决这个问题。