javascript - 单向数据流 : alleviating rework when dealing with a huge list of items?

标签 javascript reactjs redux flux re-frame

据我所知,单向数据流(Flux)似乎不适合特定的用例。我们有一个 SPA,可以显示整个月的数百个日历条目的列表。每个条目都总结了一些细节。

UI 允许用户通过单击条目来展开条目以显示其他详细信息。这是在模型中的条目上切换扩展位的简单问题。

flux 中令我困扰的部分是每个用户操作都需要整个 View 模型的重新渲染,然后与 DOM 保持一致。因此,在数百个条目中的单个条目上切换一点会触发相当多的返工,重新生成数百个未进行任何更改的其他条目,以适应条目上的更改。

必须有一种方法将更新消息传递到正确的邮箱,以避免不必要的返工。我知道 React 使用键来尝试优化 View 模型与 DOM 协调的方式,但即使进行了这种优化,整个 View 模型也会在任何操作中完全重新生成。如果消息路由和 DOM 协调更好,我认为没有理由不能显示数千个项目的列表。

我正在想办法解决这个问题。我的方法使用一种记忆化版本,可以缓存先前渲染的 View 模型。我有兴趣学习他人的创新。

最佳答案

React-Redux 库提供了一个 connect 函数,该函数生成处理订阅 Redux 存储的包装器组件。 connect 实现了很多优化,以确保包装的组件仅在实际需要时重新渲染。您还可以使用一些特定的模式来帮助优化重新渲染。主要的一个是让一个连接列表组件将项目 ID 传递给连接的子组件,这些子组件使用该 ID 查找自己的数据。最后,通常使用重新选择库创建的内存“选择器”函数也可以帮助减少重新渲染。

Redux Performance我的部分React/Redux links list有许多关于此主题的文章,如Redux FAQ question on "scaling Redux" 。文章"High Performance Redux"信息特别丰富,还有一个good performance benchmark comparing Redux vs MobX本周早些时候。

关于javascript - 单向数据流 : alleviating rework when dealing with a huge list of items?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087496/

相关文章:

javascript - 图像意外地未在 React Native 教程中渲染

javascript - 在切换时使用 CSSTransitionGroup react 动画

javascript - 如何编写一个实用函数,返回数组中 2 个元素之后的所有元素

javascript - 谷歌图表 :Data column(s) for axis #0 cannot be of type string error

node.js - 使用本地 NPM 包

testing - 如何使用 flutter_redux 测试 Flutter 应用程序?

javascript - 使用 Jest 测试化简器文件中的函数

javascript - 处理多个 Canvas 上下文的解决方案

javascript - AJAX 调用 Web 服务

reactjs - 使用 redux 从不相关的组件传递状态?