在資源有限的設備中,通過組件池來利用性能是很常見的做法。例如,有一個無限的滾動列表。由於在視口中總是會顯示大約10個組件,因此池中只能有20個組件實例。當用戶向上或向下滾動時,頂部或底部的組件切換到另一側並填充新數據。用這種方式,用戶覺得列表很長,但只需要20個組件實例。如何在React中執行組件池?
使用jQuery和命令式編程,很容易實現這種組件池技巧。但是,在React世界中,UI是聲明性的。
const List = ({listData}) => {
return <ul>
{listData.map(item => <li>{item}</li>);
</ul>;
}
該代碼只是聲明有一個要顯示的項目列表。我們的代碼無法控制組件池;我相信React本身會創建DOM池。
那麼,如何實現組件池以獲得更好的性能?
謝謝你的提及,馬克!關於這個例子的一個小問題是,它會導致不必要的DOM更新,因爲每次開始索引改變時,所有元素都會被更新,每個元素的鍵都會改變。只要池大小穩定,您可以嘗試旋轉鍵(例如'(startIndex + index)%poolSize')。有了RV,我發現把鍵設置爲'startIndex + index'但是YMMV更好。 – brianvaughn
Bah,旋轉鍵應該是'(startIndex + index)%(displaySize + 1)' – brianvaughn