react-native – 如何处理ListView排序性能?

前端之家收集整理的这篇文章主要介绍了react-native – 如何处理ListView排序性能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ListView,显示聊天会话列表(类似于Whatsapp / Facebook Messenger),其中包含以下rowHasChanged:
rowHasChanged: (r1,r2) => r1.id !== r2.id

我注意到即使我使用shouldComponentUpdate,也会重新呈现未更新的项目.

经过一些跟踪后我发现,因为在克隆dataSource之前我对项目进行了不同的排序(新消息使项目跳转到列表的顶部),rowHasChanged正在比较不同的行.这样做是有道理的.

但它是不是有一个解决方案来支持以高性能的方式进行排序?在WPF中,我们有一个CollectionViewSource,除了它的数据之外还收到了something to sort by,因为同样的问题(也支持过滤和其他).

有谁知道摆脱这些多余渲染的方法

您是否正在使用dataSource?
this.setState({
    dataSource: this.ds.cloneWithRows(rowData)
});

尝试使用这样:

this.setState(state => ({
    dataSource: this.state.dataSource.cloneWithRows(rowData)
}))

在第一个sutiation中,您为dataSource设置了一个新值,因此它不会使用rowHasChanged,并将其视为新的dataSource.

猜你在找的React相关文章