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

时间:2016-01-22 04:36:49

标签: react-native sectionheader

关于这一点的文档中没有任何内容,所以任何人都可以告诉我这究竟意味着什么:

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的第一行是什么/意味着什么。

1 个答案:

答案 0 :(得分:1)

这里有两个概念,箭头函数和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: 许多功能都是反应原生的,并不像我希望的那样有很好的记录,但它仍处于早期阶段,我能说清楚,

  

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

react facebook

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

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

  1. 呈现的行/ sectionHeader和
  2. 当前行/ sectionHeader 如果row / sectionHeader未更改且不应重新呈现,则函数返回false;如果已更改且应重新呈现,则返回true。
  3. 注意:在主体中只有一个语句的ARROW函数可以省略花括号和返回运算符,它们将自动返回其一个表达式的结果。 例如(a, b) => a + b(a, b) => {return a + b}function(a, b){return a + b}

    相同