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

鸿蒙:使用@Reusable实现组件的复用,提升性能

1、前言

之前开发中,没有使用过@Reusable实现组件的复用,因为自己也不咋涉及高性能损耗。这次在看文档时发现了这个装饰器,实测发现可以避免组件的重复创建,所以在列表子组件比较多,并且频繁销毁重建的情况下适合使用该装饰器。

2、参考文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-reusablehttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-reusable

3、核心思路

1. 创建一个用来渲染列表的数组

2. 列表的每项调用使用@Reusable装饰的组件

4、核心代码

@Reusable
@Component
struct myComponent {@Prop item: number = 0aboutToAppear(): void {console.log("组件创建了" + this.item)}aboutToReuse(): void {// 如果使用了@Reusable,那么不会重新创建,而是会复用console.log("组件复用了" + this.item)}build() {Text("这是 " + this.item).fontSize(20).width("100%").textAlign(TextAlign.Center)}
}

5、运行效果

6、完整代码

Index.ets

@Entry
@Component
struct Index {@State arrayNum: Array<number> = []aboutToAppear(): void {this.pushArray()}pushArray() {this.arrayNum = []for (let index = 0; index < 10; index++) {this.arrayNum.push(index)}}build() {Column() {Row({ space: 20 }) {Button("清空列表").onClick(() => {this.arrayNum = []})Button("创建列表").onClick(() => {this.pushArray()})}List() {ForEach(this.arrayNum, (item: number) => {ListItem() {myComponent({ item: item })}})}.width("100%").height("90%")}}
}@Reusable
@Component
struct myComponent {@Prop item: number = 0aboutToAppear(): void {console.log("组件创建了" + this.item)}aboutToReuse(): void {// 如果使用了@Reusable,那么不会重新创建,而是会复用console.log("组件复用了" + this.item)}build() {Text("这是 " + this.item).fontSize(20).width("100%").textAlign(TextAlign.Center)}
}

以上是个人经验分享

觉得有帮助可以点赞或收藏

http://www.dtcms.com/a/462092.html

相关文章:

  • Day08_刷题niuke20251009
  • 操作系统权限提升(Windows令牌窃取和白名单绕过UAC提权)
  • 商城网站模板dede温州论坛703
  • 多线程——定时器
  • 深圳网站建设哪家公司便宜国外网建站
  • 告别复杂配置:用Milvus、RustFS和Vibe Coding,60分钟DIY专属Chatbot
  • 网站做直播功能需要注册吗备案号查询平台
  • 【HDFS实战】社区版 HDFS 2.8.2滚动升级3.4.1实践
  • 临沂外贸网站建设网站的建设需要虚拟机吗
  • 【MySQL】从零开始了解数据库开发 --- 数据表的约束
  • 建什么网站 做 cpa国外设计案例网站
  • 有可以做推广的网站吗wordpress插件如何开发
  • nginx访问控制 用户认证 https
  • 部署 Ansible
  • 磁悬浮轴承的磁滞非线性:精密控制中的“幽灵”与驯服之道
  • 沈阳网站外包公司wordpress 获取文章的分类id
  • Git 中的某个分支打标签
  • 知识IP如何迭代打法?
  • 今日行情明日机会——20251009
  • 网站游戏网站怎么自己做聚名网域名转出
  • TDengine 数学函数 ABS() 用户手册
  • AI 赋能 IBMS 智能化集成系统:从 “被动监控” 到 “主动决策” 的智慧建筑升级革命
  • 鹤庆县公路建设网站工商营业执照咨询电话24小时
  • 线上做网站赚钱深圳网站优化网站
  • Java 泛型中级面试题及答案
  • Java虚拟机(VM)相关线程与方法的说明展开
  • Windows 11 安装 JDK 25
  • web 消息推送
  • 手写MyBatis第99弹:MyBatis线程安全问题与连接池调优
  • springboot088健康追踪系统软件lgl(源码+部署说明+演示视频+源码介绍+lw)