简单的例子

ListView - 一个核心组件,旨在高效显示垂直滚动的更改数据列表。最小的 API 是创建 ListView.DataSource,使用简单的数据 blob 数组填充它,并使用该数据源和 renderRow 回调实例化 ListView 组件,该回调从数据数组中获取 blob 并返回可渲染组件。

最小的例子:

getInitialState: function() {
  var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
  return {
    dataSource: ds.cloneWithRows(['row 1', 'row 2']),
  };
},

render: function() {
  return (
    <ListView
      dataSource={this.state.dataSource}
      renderRow={(rowData) => <Text>{rowData}</Text>}
    />
  );
},

ListView 还支持更多高级功能,包括具有粘性节标题,页眉和页脚支持的部分,到达可用数据末尾的callback(onEndReached)以及在设备视口更改中可见的行集(onChangeVisibleRows),以及几个性能优化。

有一些性能操作旨在使 ListView 平滑滚动,同时动态加载可能非常大(或概念上无限)的数据集:

  • 只重新渲染已更改的行 - 提供给数据源的 rowHasChanged 函数告诉 ListView 是否需要重新渲染行,因为源数据已更改 - 有关详细信息,请参阅 ListViewDataSource。
  • 速率限制行渲染 - 默认情况下,每个事件循环只渲染一行(使用 pageSize prop 自定义)。这会将工作分解为更小的块,以减少渲染行时丢帧的可能性。