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

arkts中@Watch监听的使用

概述

@Watch用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。@Watch在ArkUI框架内部判断数值有无更新使用的是严格相等(===),遵循严格相等规范。当在严格相等为false的情况下,就会触发@Watch的回调。

  1. 当观察到状态变量的变化(包括双向绑定的AppStorage和LocalStorage中对应的key发生的变化)的时候,对应的@Watch的回调方法将被触发;
  2. @Watch方法在自定义组件的属性变更之后同步执行;
  3. 如果在@Watch的方法里改变了其他的状态变量,也会引起状态变更和@Watch的执行;
  4. 在第一次初始化的时候,@Watch装饰的方法不会被调用,即认为初始化不是状态变量的改变。只有在后续状态改变时,才会调用@Watch回调方法。

注意:

  • 建议开发者避免无限循环。循环可能是因为在@Watch的回调方法里直接或者间接地修改了同一个状态变量引起的。为了避免循环的产生,建议不要在@Watch的回调方法里修改当前装饰的状态变量;
  • 开发者应关注性能,属性值更新函数会延迟组件的重新渲染(具体请见上面的行为表现),因此,回调函数应仅执行快速运算;
  • 不建议在@Watch函数中调用async await,因为@Watch设计的用途是为了快速的计算,异步行为可能会导致重新渲染速度的性能问题。
@Component
struct TotalView {//onCountUpdated监听函数名@Prop @Watch('onCountUpdated') count: number;@State total: number = 0;// @Watch 回调onCountUpdated(): void {this.total += this.count;}build() {Text(`Total: ${this.total}`).fontSize(30)}
}
@Entry
@Component
struct Index {@State count: number = 0;build() {Column() {Button('add').onClick(() => {this.count++}).fontSize(50)TotalView({ count: this.count })}}
}

效果如下:

相关文章:

  • [年终总结]人生就是大闹一场
  • 为什么不应该在 SAN/NAS 设备上运行 MinIO(还有一个例外)
  • 【机器学习】人工智能概述
  • Mysql 高级语句
  • P5729 【深基5.例7】工艺品制作题解
  • 数据资源将被视为资产 明天起纳入财务报表
  • 防火墙双机热备配置步骤
  • ubuntu22.04 安装jdk8,jdk11,jdk17,jdk21 并且便于切换
  • Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性
  • 继续声明 | 连声明都抄,谁抄袭谁,一目了然,现在竟然恬不知耻的反咬一口。
  • c语言实现得到某数的某方(n^k)的值
  • IntelliJ IDEA Apache Dubbo,IDEA 官方插件正式发布!
  • C语言之整型提升
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • mysql使用全文索引+ngram全文解析器进行全文检索
  • “大数据应用场景”之隔壁老王(连载四)
  • 【刷算法】求1+2+3+...+n
  • 10个确保微服务与容器安全的最佳实践
  • css的样式优先级
  •  D - 粉碎叛乱F - 其他起义
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • node 版本过低
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • php中curl和soap方式请求服务超时问题
  • redis学习笔记(三):列表、集合、有序集合
  • SpiderData 2019年2月16日 DApp数据排行榜
  • TypeScript迭代器
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vim Clutch | 面向脚踏板编程……
  • vue-router 实现分析
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 机器学习学习笔记一
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 巧用 TypeScript (一)
  • 区块链将重新定义世界
  • 责任链模式的两种实现
  • 追踪解析 FutureTask 源码
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • !$boo在php中什么意思,php前戏
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #微信小程序:微信小程序常见的配置传旨
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (SpringBoot)第二章:Spring创建和使用
  • (二)JAVA使用POI操作excel
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)http协议
  • (转)Unity3DUnity3D在android下调试
  • (转)大道至简,职场上做人做事做管理
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析