React Native ListView的目的是什么' rowHasChanged'?

时间:2016-07-24 22:42:32

标签: react-native

根据React Native的ListView documentation,应该使用以下标准的rowHasChanged实现声明ListView数据源,以确定给定行的更改时间:

var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});

我的问题是:在提供检测行是否发生变化的这种明显而微不足道的实现背后的想法是什么?有没有这种实现不成立的情况?我会想象ListViewDataSource至少会为这样一个简单的函数提供一个默认实现,而不是每次创建数据源时都必须复制和粘贴这些代码。

2 个答案:

答案 0 :(得分:1)

我无法说明为什么没有提供默认值,但它可用的原因是你有一个包含复杂对象的列表视图,并且知道一种更有效的方法来知道行是否已更改... for例如,如果您的所有列表项都具有ID属性,并且您知道如果ID相同,则整个对象与您可以执行的操作相同:

var ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1.id !== r2.id }); 

答案 1 :(得分:0)

rowHasChanged可在重新呈现整个列表时帮助组件提高效率。它提供了一种通过不重新呈现整个列表来获得性能的方法。 这是一个解释:

https://facebook.github.io/react-native/docs/performance.html

相关问题