簡單的例子

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 自定義)。這會將工作分解為更小的塊,以減少渲染行時丟幀的可能性。