2

文档中没有关于此的任何内容,因此任何人都可以告诉我这到底意味着什么:

sectionHeaderHasChanged: (s1, s2) => s1 !== s2,

或这个:

sectionHeaderHasChanged: (h1, h2) => h1 !== h2,

你通常在这里看到它:

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

虽然我们在这里,但也不太确定关于 rowHasChanged 的​​第一行是什么/意味着什么。

4

1 回答 1

1

这里有两个概念,Arrow 函数和 sectionHeaderHasChanged 和 rowHasChanged 属性。

箭头函数: 这是ecmascript 6中的一个新特性,它允许快速创建保留在周围代码上下文中的小型匿名函数,enter code here例如:

语法很简单:(arguments) => {function body} 例如以下两个将相同的函数回调分配给 onclick:

btn.onclick = (event) => {console.log(event)} 

btn.onclick = function(event){console.log(event)}

sectionHeaderHasChanged && rowHasChanged: 许多特性是 react-native 并没有像我希望的那样有很好的文档记录,但它还处于早期阶段,我能说的最好,

仅重新渲染更改的行 - 提供给数据源的 rowHasChanged 函数告诉 ListView 是否需要重新渲染一行,因为源数据已更改 - 请参阅 ListViewDataSource 了解更多详细信息。

反应脸书

数据源对象允许两个回调是徒劳的: 1. rowHasChanged 2. sectionHeaderHasChanged 这两个检查以查看先前呈现的行/sectionHeader(分别)是否已更改,并且应在用户上下滚动列表时呈现。

对于上面的代码片段,您将提供 dataSource 回调 ARROW 函数,每个函数接受两个参数:

  1. 渲染的 row/sectionHeader 和
  2. 当前行/sectionHeader 如果 row/sectionHeader 没有更改并且不应重新渲染,则函数返回 false,如果已更改且应重新渲染,则返回 true。

注意:在主体中只有一条语句的 ARROW 函数可以省略花括号和返回运算符,它们将自动返回其一个表达式的结果。例如(a, b) => a + b将与(a, b) => {return a + b}和相同function(a, b){return a + b}

于 2016-01-22T06:21:52.833 回答