当前位置: 首页 > news >正文

鸿蒙OS开发ForEach循环渲染

摘要

在ForEach循环渲染过程中,如果修改列表项中的数据,但是UI页面不会刷新。在最近开发公司app时遇到了这个问题,经过查看官方文档找到了解决方式

官方地址:数据变化不刷新

一、具体解决方案

思路:通过父子组件传值的方式,把需要循环显示的UI页面封装成子组件,父组件首先定义一个修饰器@Observed装饰的类别,子组件通过@ObjectLink装饰器的变量接收参数即可。

示例:

父组件

@Observed
class ChildCommonList {
  childEntity: FlowUpFileForm[] = []

  constructor(childEntity: FlowUpFileForm[]) {
    this.childEntity = childEntity;
  }
}

UI页面加载子组件

...

@State fileList: FlowUpFileForm[] = [];
@State childCommon: ChildCommonList = new ChildCommonList(this.fileList);

...

build() {

    ...

    ChildFileComEntry({ childCom: this.childCommon })

    ...
}

子组件

@Component
struct ChildFileComEntry {

    @ObjectLink childCom: ChildCommonList;

    build() {

        ForEach(this.childCom.childEntity, () => {
            ....
        })
    }

}

经过上面的业务拆分,即可解决使用ForEach渲染页面修改数据不刷新的问题

相关文章:

  • qt中再函数中开辟的内存,要不要手动释放?
  • 实现图形界面访问无显示器服务器
  • 【面试】JVM
  • 侯捷C++课程学习笔记:详解多态(五)
  • 【后端】【django drf】django自动导出优雅的api文档的写法
  • easy-poi导出and导入一对多数据excel
  • 基于深度学习的多模态人脸情绪识别研究与实现(视频+图像+语音)
  • mov格式视频如何转换mp4?
  • GESP2024年3月认证C++三级( 第三部分编程题(2)完全平方数)
  • PlainUSR|LIA: 追求更快的卷积网络实现高效的超分辨率重建
  • USB数据采集卡 Labview采集卡 32路AD模拟量采集 DAQ卡
  • 前瞻技术新趋势:改变未来生活方式的技术探索
  • 一个简单的PHP框架
  • 在 Qt 中自定义控件样式:使用 QProxyStyle 代理和修改绘制元素
  • PostgreSQL 部署全攻略:单机与集群模式详解
  • Bash和Zsh的主要差异是?
  • 高效集成销售订单数据到MySQL的方法
  • Unity学习日志番外:简易行为树
  • XML Schema 实例
  • 孔夫子根剧关键字获取在售商品 API
  • 2024年全国博物馆接待观众14.9亿人次
  • 竞彩湃|足总杯决赛或有冷门,德甲欧冠资格之争谁笑到最后
  • 爬坡难下坡险,居民出行难题如何解?
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖
  • 微软将在全球裁员6000人,目标之一为减少管理层