据我所知,单向数据流(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/