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

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

文档中没有关于此的任何内容,所以谁能告诉我这到底是什么意思:

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 does/means 的第一行是什么。

这里有两个概念,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 并没有像我希望的那样得到很好的记录,但现在还处于早期阶段,我能说的最好,

Only re-render changed rows - the rowHasChanged function provided to the data source tells the ListView if it needs to re-render a row because the source data has changed - see ListViewDataSource for more details.

react facebook

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

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

  1. 呈现的 row/sectionHeader 和
  2. 当前row/sectionHeader 函数 return 如果 row/sectionHeader 未更改且不应为 re-rendered 则为 false,如果已更改且应为 re-rendered 则为 true。

注意: 函数体中只有一个语句的 ARROW 函数可以省略大括号和 return 运算符,它们将自动 return 结果他们的一种表达方式。 例如(a, b) => a + b(a, b) => {return a + b}function(a, b){return a + b}

相同