【ArkTS】Watch装饰器

@Watch装饰器,相当于Vue中的监听器 以及 React中使用useEffect监听变量

使用@Watch装饰器,可以监听一个数据的变化,并进行后续的响应。
使用方法:
@Watch(‘回调函数’),写在@State装饰器后(其实写在前面也行,但是写到后面更加清晰也符合规范)。

@State @Watch('change') baseNumber: number = 1
change(){
   
    this.res = Math.pow(this.baseNumber,this.pow)
}

注意:回调函数中一定不能直接操作监听的数据,会造成死循环

下面是一个综合案例

@Entry
@Component

struct UseWatch {
   
  // 将监听器写到@State装饰器后面
  @State @Watch('change') baseNumber: number = 1
  @State pow: number = 2
  @State res: number = 1
  change(){
   
    this.res = Math.pow(this.baseNumber,this.pow)
  }
  build() {
   
      Column(){
   
        Text(`基数:${
     this.baseNumber}`)
          .fontSize(40)
          .onClick(() => {
   
            this.baseNumber++
          })
        Divider()
        Text(`次幂:${
     this.pow}`)
          .fontSize(40)
          .onClick(() => {
   
            this.pow ++
          })
        Divider()
        Text(`结果:${
     this.res}`)
          .fontSize(40)
      }
      .width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
  }
}

运行发现,点击 基数 时,即@Watch监听的数据发生变化时,执行了change函数
在这里插入图片描述
但是点击 次幂 时,由于@Watch监听的数据未发生改变,所以没执行change函数
在这里插入图片描述
再次点击 基数 时,重新执行change函数
在这里插入图片描述

相关推荐

  1. 装饰 之accessor 装饰

    2023-12-17 20:10:02       52 阅读
  2. 装饰基础知识

    2023-12-17 20:10:02       61 阅读
  3. 装饰模式

    2023-12-17 20:10:02       58 阅读
  4. Python装饰

    2023-12-17 20:10:02       64 阅读
  5. 装饰设计模式

    2023-12-17 20:10:02       51 阅读
  6. Python装饰

    2023-12-17 20:10:02       63 阅读
  7. Python装饰

    2023-12-17 20:10:02       64 阅读
  8. @staticmethod函数装饰

    2023-12-17 20:10:02       53 阅读
  9. 装饰模式(Decorator)

    2023-12-17 20:10:02       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 20:10:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 20:10:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 20:10:02       82 阅读
  4. Python语言-面向对象

    2023-12-17 20:10:02       91 阅读

热门阅读

  1. vue基础

    2023-12-17 20:10:02       57 阅读
  2. RHCE 9版本考试资料

    2023-12-17 20:10:02       39 阅读
  3. 如何传承中国文化

    2023-12-17 20:10:02       62 阅读
  4. 面试经典150题(21-26)

    2023-12-17 20:10:02       64 阅读
  5. K8s中Service Account和RBAC

    2023-12-17 20:10:02       50 阅读
  6. Linux Find

    2023-12-17 20:10:02       52 阅读
  7. Spring Boot 自动装配的原理

    2023-12-17 20:10:02       57 阅读
  8. Angular13无法在浏览器debug

    2023-12-17 20:10:02       53 阅读
  9. UI卡顿问题

    2023-12-17 20:10:02       60 阅读
  10. centos7安装和卸载MySQL8.0

    2023-12-17 20:10:02       58 阅读
  11. linux ioctl

    2023-12-17 20:10:02       41 阅读