FlatList
是 React Native 中用于渲染大量数据列表的高性能组件。它通过只渲染屏幕上可见的部分来优化性能,而不是一次性渲染整个列表。
renderItem
属性自定义每个列表项的渲染方式。FlatList
主要有以下几种类型:
horizontal
属性实现。适用于需要渲染大量数据的场景,如新闻列表、商品列表、聊天记录等。
PureComponent
或 React.memo
避免不必要的重新渲染。getItemLayout
属性优化滚动性能。getItemLayout
属性优化滚动性能。import React, { useState } from 'react';
import { FlatList, Text, View, StyleSheet } from 'react-native';
const ITEM_HEIGHT = 50;
const App = () => {
const [data, setData] = useState(Array.from({ length: 100 }, (_, i) => ({ id: i, title: `Item ${i}` })));
const handleLoadMore = () => {
// 模拟加载更多数据
const newData = Array.from({ length: 10 }, (_, i) => ({ id: data.length + i, title: `Item ${data.length + i}` }));
setData([...data, ...newData]);
};
return (
<View style={styles.container}>
<FlatList
data={data}
renderItem={({ item }) => <Text style={styles.item}>{item.title}</Text>}
keyExtractor={item => item.id}
style={styles.flatList}
getItemLayout={(data, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
onEndReached={handleLoadMore}
onEndReachedThreshold={0.5}
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
flatList: {
width: '80%',
height: '80%',
},
item: {
height: ITEM_HEIGHT,
justifyContent: 'center',
alignItems: 'center',
borderBottomWidth: 1,
borderBottomColor: '#ccc',
},
});
export default App;
领取专属 10元无门槛券
手把手带您无忧上云