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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |