ちゃんとしないと VirtualizedList の仮想化を生かせない
3291 ワード
React Native の話です。
RN で作る画面のレイアウト、NavigationBar と TabBar を除くと、VirtualizedList があるのみ or スクロール無し の2パターンしかない
— moriyuu (@moriyuu__) September 14, 2020
と思った。
みたいなレイアウトの(下にスクロールした先にコンテンツが並んでいる)ユーザー詳細画面があったら、
A
const UserPage = () => {
return (
<ScrollView>
<ProfileComponent />
<FlatList
data={tweets}
renderItem={renderItem}
/>
</ScrollView>
)
}
ではなく、
B
const UserPage = () => {
return (
<FlatList
ListHeaderComponent={<ProfileComponent />}
data={tweets}
renderItem={renderItem}
/>
)
}
と作る。
A で作ってしまいそうだけど、これでは FlatList はうまく仮想化されず、レンダリングのパフォーマンスが最適化されない。
A, B それぞれの renderItem
の中で console.log
するなどして、画面よりだいぶ下のほうの item が、画面をスクロールする前の段階でレンダリングされてしまうかどうかを確かめられる。A だとレンダリングされてしまうが、B だとその item の近くまでスクロールしないとレンダリングされない。
あと onEndReached とかも使えないしね
参考
Author And Source
この問題について(ちゃんとしないと VirtualizedList の仮想化を生かせない), 我々は、より多くの情報をここで見つけました https://qiita.com/moriyuu/items/b79f5b30576649305e26著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .