2015-11-18 47 views
3

試圖在反應本機中實現對ListView的快速過濾。目前我正在過濾數據源以實現此目的。它可以工作,但會導致嚴重的性能問題。問題如下:過濾具有大量行的ListView

  1. 有一個ListView有100個項目在裏面。所有這些都呈現正被應用於
  2. 過濾器當過濾器清除了其收縮,比方說,2項
  3. 和DataSource追溯到初始100個項目 ListView控件重新呈現98個項目造成很大的性能問題 ( ListView性能,同時批量渲染新行here

我在這裏丟失了什麼?

編輯:添加rnplay示例應用程序來演示我目前使用https://rnplay.org/apps/szko6Q

+0

沒有問題的代碼示例變得不太注意的辦法,請發表您的代碼示例詢問與提供的代碼有關的問題。 – ahmad

+0

可能會計算出屏幕上的內容並僅渲染那些項目,檢測滾動並在用戶滾動時呈現剩餘的項目。 (你也可以移除滾動到屏幕外的那個,這個名爲removeClippedSubviews的實驗道具) –

回答

1

雖然呈現這些用戶下文提到的特性

<ListView 
    removeClippedSubviews={true} 
    renderRow={this.renderRow} 
    dataSource={this.getDataSource()} 
    renderScrollComponent={(props) =><React.RecyclerViewBackedScrollView {...props}/>} 
    style={{overflow:'hidden'}} 
    renderSectionHeader={this.renderSectionHeader}/>