FlatList 和 VirtualizedList 的区别

the*_*e64 6 react-native

我是新的反应本地人,感到困惑的区别FlatListVirtualizedList

所以,

  1. FlatList和之间有什么区别VirtualizedList
  2. 我应该什么时候使用每个?

Fre*_*sar 6

<FlatList>一个用于渲染基本的平面列表的高性能接口。

另一方面,<VirtualizedList><FlatList>和<SectionList>组件的基本实现,它们也有更好的文档记录。一般来说,只有当您需要比 FlatList 提供的更多灵活性时才应该真正使用 < VirtualizedList > ,例如用于不可变数据而不是普通数组。

平面列表示例:

const App = () => {
  const renderItem = ({ item }) => (
    <Item title={item.title} />
  );

  return (
    <SafeAreaView style={styles.container}>
      <FlatList
        data={DATA}
        renderItem={renderItem}
        keyExtractor={item => item.id}
      />
    </SafeAreaView>
  );
}
Run Code Online (Sandbox Code Playgroud)

虚拟化列表示例:

const App = () => {
  return (
    <SafeAreaView style={styles.container}>
      <VirtualizedList
        data={DATA}
        initialNumToRender={4}
        renderItem={({ item }) => <Item title={item.title} />}
        keyExtractor={item => item.key}
        getItemCount={getItemCount}
        getItem={getItem}
      />
    </SafeAreaView>
  );
}


Run Code Online (Sandbox Code Playgroud)

更多信息:

https://reactnative.dev/docs/virtualizedlist

https://reactnative.dev/docs/flatlist