根据React Native的ListView文档,应使用以下标准实现的rowHasChanged声明ListView数据源,以确定给定行何时更改:
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
Run Code Online (Sandbox Code Playgroud)
我的问题是:在检测行是否发生变化的情况下,必须提供如此明显且无关紧要的实现背后的想法是什么?有没有这种实现不成立的情况?我想象ListViewDataSource至少会为这样一个简单的函数提供一个默认实现,而不是每次创建数据源时都必须复制和粘贴这些代码.
我无法解释为什么没有提供默认值,但它可用的原因是,如果您有一个包含复杂对象的列表视图,并且知道一种更有效的方法来知道一行是否已更改......例如,如果您的所有列表项有一个 ID 属性,您知道如果 ID 相同,则整个对象是相同的,您可以这样做:
var ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1.id !== r2.id });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |