【问题标题】:alternate to FlatList in react native在本机反应中替代 FlatList
【发布时间】:2017-09-07 09:40:15
【问题描述】:

如何在旧的 react native 版本中使用 FlatList 功能,我的 react native 版本是 0.41.2。请建议。我想在可折叠集中使用 flatlist 来渲染大数据。

【问题讨论】:

    标签: reactjs mobile react-native react-android


    【解决方案1】:

    相信我,如果不使用 RN 0.43 及更高版本,就无法使用 FlatList 组件。您可以做的唯一方法是升级您的 RN 版本。

    【讨论】:

    【解决方案2】:

    只需使用 RecyclerListView 代替。它比 FlatList 更快,并且在 Flipkart 进行了实战测试。作品 0.30+

    链接:https://github.com/Flipkart/ReactEssentials

    您可以在此处阅读更多信息:https://medium.com/@naqvitalha/recyclerlistview-high-performance-listview-for-react-native-and-web-e368d6f0d7ef

    【讨论】:

    • 动态项目高度效果不佳,甚至比 flatlist 慢。
    • 不适用于动态高度。对于像 facebook 帖子这样的平面列表,这是没用的
    • 如果您将 forceNonDeterministicRendering 设置为 true,它会将给定的尺寸视为估计值,并适用于动态高度。 Flipkart 的大多数列表都是动态的。
    【解决方案3】:

    FlatList 于 0.44 发布。对于以前的版本,您应该使用 ListView。 来自官方文档的简单示例:

    class MyComponent extends Component {
      constructor() {
        super();
        const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
        this.state = {
          dataSource: ds.cloneWithRows(['row 1', 'row 2']),
        };
      }
    
      render() {
        return (
          <ListView
            dataSource={this.state.dataSource}
            renderRow={(rowData) => <Text>{rowData}</Text>}
          />
        );
      }
    }
    

    https://facebook.github.io/react-native/docs/listview.html

    【讨论】:

    • 是的,我正在使用但有一些性能问题,这就是我要求 FlatList 的方式
    • Listview 不支持 Flatlist 支持的多列显示。
    • 对于 0.44 以下的版本,渲染列表的选项是 ListView,但这并不意味着它具有 FlatList 的所有功能。如果你需要 FlatList 功能,你应该更新你的 RN 版本并使用它
    【解决方案4】:

    使用 react-native-optimized-flatlist 以获得稳定和更快的响应。

    npm i react-native-optimized-flatlist
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      相关资源
      最近更新 更多