1

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

UI 允许用户通过单击来展开条目以显示其他详细信息。这是一个简单的问题,只需expanded在模型中的条目上进行一点切换。

困扰我的部分变化是每个用户操作都需要重新渲染视图模型,然后再与 DOM 协调一致。因此,在数百个条目中切换一点会触发相当多的返工,重新生成数百个未对其进行更改的其他条目,以适应其中的更改。

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

我正在想办法解决这个问题。我的方法使用了一种记忆化版本,它缓存了来自先前渲染的视图模型。我有兴趣从他人的创新中学习。

4

2 回答 2

1

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

我的React/Redux 链接列表Redux 性能部分有很多关于这个主题的文章,Redux 常见问题解答关于“缩放 Redux”的问题也是如此。“High Performance Redux”一文提供了特别丰富的信息,本周早些时候还有一个比较 Redux 与 MobX 的良好性能基准。

于 2016-12-11T18:44:17.893 回答
0

建议使用 redux-saga 来解决问题。请参考以下链接

[redux sage][1] https://shift.infinite.red/using-redux-saga-to-simplify-your-growth-react-native-codebase-2b8036f650de#.yz91g1rn2

于 2016-12-11T15:47:28.100 回答