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