我以前看到這個錯誤。優化我的代碼後,我不再看到它。我通過將console.log()語句添加到創建FlatList的Component的render()函數以及呈現List中的每個項目的函數中找到了此問題。我注意到我的代碼以前重新呈現整個FlatList及其所有項目,只要該頁面上的任何組件發生狀態更改(即使是與FlatList無關的組件)。我通過將各種組件轉換爲PureComponents來解決此問題。這裏是我的FlatList聲明看起來是這樣的:
<FlatList
ref={(ref) => { this.flatListRef = ref; }}
data={allPosts}
initialNumToRender={7}
renderItem={({ item }) =>
<Post postJson={item} isGroupAdmin={isGroupAdmin} user={user} />
}
/>
注意到,我回來了,這是一個純粹的成分:
import React, { PureComponent } from 'react';
class Post extends PureComponent {
render() { ... }
}
這確保了FlatList重新呈現一個只有在職位變動。當我以前傳遞一個正常功能renderItem
即,做了這樣的功能:
return (
<View>
...
</View>
);
我注意到FlatList重新渲染的所有項目,只要任何一項改變。現在,通過使用PureComponent,FlatList只會呈現添加到列表中的新項目(如果列表已被顯示)。
第一次渲染整個列表仍需要相對較長的時間。然而,initialNumToRender
確保屏幕幾乎立即被填滿(而剩餘的項目在後臺呈現)。更重要的是,在最初的渲染之後,FlatList一次只能渲染一個項目(項目發生變化)。
我發現this post非常有幫助)。
我剛剛意識到這也解釋了here
我經常得到這樣的開發模式下,我認爲的原因是在這種情況下所做的所有其他檢查。 – raarts
嗨拉布,感謝評論,實際上我也得到它,當我不在開發模式在世博會。 –
你能解決這個問題嗎? – crawler