加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:49:04 所属栏目:百科 来源:网络整理
导读:我有一个ListView,显示聊天会话列表(类似于Whatsapp / Facebook Messenger),其中包含以下rowHasChanged: rowHasChanged: (r1,r2) = r1.id !== r2.id 我注意到即使我使用shouldComponentUpdate,也会重新呈现未更新的项目. 经过一些跟踪后我发现,因为在克隆da
我有一个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读