如何在 Ionic React 中渲染大量项目时减少渲染时间

如何解决如何在 Ionic React 中渲染大量项目时减少渲染时间

我正在使用 IonicReact 构建一个移动应用程序。我只想从本地 JSON 文件(JSON 文件包含 1000 多个项目的数组)中呈现项目列表。我映射数组项并通过将它们包装在 Model: "res-idec" __________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ================================================================================================== input_11 (InputLayer) [(None,16,256,1)] 0 __________________________________________________________________________________________________ conv2d_58 (Conv2D) (None,64) 640 input_11[0][0] __________________________________________________________________________________________________ conv2d_59 (Conv2D) (None,64) 36928 conv2d_58[0][0] __________________________________________________________________________________________________ add_48 (Add) (None,64) 0 conv2d_59[0][0] input_11[0][0] __________________________________________________________________________________________________ max_pooling2d_24 (MaxPooling2D) (None,128,64) 0 add_48[0][0] __________________________________________________________________________________________________ conv2d_60 (Conv2D) (None,64) 36928 max_pooling2d_24[0][0] __________________________________________________________________________________________________ conv2d_61 (Conv2D) (None,64) 36928 conv2d_60[0][0] __________________________________________________________________________________________________ add_49 (Add) (None,64) 0 conv2d_61[0][0] max_pooling2d_24[0][0] __________________________________________________________________________________________________ max_pooling2d_25 (MaxPooling2D) (None,8,64,64) 0 add_49[0][0] __________________________________________________________________________________________________ conv2d_62 (Conv2D) (None,64) 36928 max_pooling2d_25[0][0] __________________________________________________________________________________________________ conv2d_63 (Conv2D) (None,64) 36928 conv2d_62[0][0] __________________________________________________________________________________________________ add_50 (Add) (None,64) 0 conv2d_63[0][0] max_pooling2d_25[0][0] __________________________________________________________________________________________________ conv2d_64 (Conv2D) (None,8) 4616 add_50[0][0] __________________________________________________________________________________________________ max_pooling2d_26 (MaxPooling2D) (None,4,32,8) 0 conv2d_64[0][0] __________________________________________________________________________________________________ flatten_8 (Flatten) (None,1024) 0 max_pooling2d_26[0][0] __________________________________________________________________________________________________ dense_24 (Dense) (None,256) 262400 flatten_8[0][0] __________________________________________________________________________________________________ encoded (Dense) (None,64) 16448 dense_24[0][0] __________________________________________________________________________________________________ dense_25 (Dense) (None,256) 16640 encoded[0][0] __________________________________________________________________________________________________ dense_26 (Dense) (None,1024) 263168 dense_25[0][0] __________________________________________________________________________________________________ reshape_8 (Reshape) (None,8) 0 dense_26[0][0] __________________________________________________________________________________________________ up_sampling2d_24 (UpSampling2D) (None,8) 0 reshape_8[0][0] __________________________________________________________________________________________________ conv2d_transpose_56 (Conv2DTran (None,64) 4672 up_sampling2d_24[0][0] __________________________________________________________________________________________________ conv2d_transpose_57 (Conv2DTran (None,64) 36928 conv2d_transpose_56[0][0] __________________________________________________________________________________________________ conv2d_transpose_58 (Conv2DTran (None,64) 36928 conv2d_transpose_57[0][0] __________________________________________________________________________________________________ add_51 (Add) (None,64) 0 conv2d_transpose_58[0][0] conv2d_transpose_56[0][0] __________________________________________________________________________________________________ up_sampling2d_25 (UpSampling2D) (None,64) 0 add_51[0][0] __________________________________________________________________________________________________ conv2d_transpose_59 (Conv2DTran (None,64) 36928 up_sampling2d_25[0][0] __________________________________________________________________________________________________ conv2d_transpose_60 (Conv2DTran (None,64) 36928 conv2d_transpose_59[0][0] __________________________________________________________________________________________________ add_52 (Add) (None,64) 0 conv2d_transpose_60[0][0] up_sampling2d_25[0][0] __________________________________________________________________________________________________ up_sampling2d_26 (UpSampling2D) (None,64) 0 add_52[0][0] __________________________________________________________________________________________________ conv2d_transpose_61 (Conv2DTran (None,64) 36928 up_sampling2d_26[0][0] __________________________________________________________________________________________________ conv2d_transpose_62 (Conv2DTran (None,64) 36928 conv2d_transpose_61[0][0] __________________________________________________________________________________________________ add_53 (Add) (None,64) 0 conv2d_transpose_62[0][0] up_sampling2d_26[0][0] __________________________________________________________________________________________________ clustering_layer (ClusteringLay (None,32) 2048 encoded[0][0] __________________________________________________________________________________________________ decoded (Conv2DTranspose) (None,1) 577 add_53[0][0] ================================================================================================== Total params: 977,417 Trainable params: 977,417 Non-trainable params: 0 中来打印它们。遍历所有项并在浏览器中显示它们需要几秒钟。请帮助我,如何优化渲染时间,从 JSON 快速加载数据。 代码如下:

<IonItem>

解决方法

基本上应该是两种方法:1.虚拟滚动。 2. 通过将大数组切割成小块来无限滚动。

但是,在您的情况下,虚拟滚动方法应该好得多。

离子虚拟滚动不支持反应。但是我找到了一篇文章并重新实现了VirtualScrollChild组件:
https://medium.com/@alvinnguyen116/virtual-and-infinite-scrolling-in-react-d56a05976cd2

import React from "react"
import { useInView } from "react-intersection-observer"

interface Props {
  height?: number
}

export const VirtualScrollChild: React.FC<Props> = (props) => {
  const [ref,inView] = useInView()
  const style = {
    height: `${props.height ? props.height : 40}px`,overflow: "hidden",}
  return (
    <div style={style} ref={ref}>
      {inView ? props.children : null}
    </div>
  )
}

用法:

    <IonList>
      {your_data_list.map((data) => (
        <VirtualScrollChild height={your_height}>
          {data...}
        </VirtualScrollChild>
      ))}
    </IonList>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?