【鸿蒙开发装饰器篇】状态装饰器

前言

并不是状态变量的所有更改都会引起UI的刷新,只有可以被框架监听到的修改才会引起UI刷新。下面会对对应的装饰器进行简单的测试,确认那种数据是可以被监听的。

装饰器@State

定义(装饰)变量,绑定该变量的UI会随着变量值的变化而变化,支持当前变量修改以及第一层数据的修改的监听,属于是浅监听

●装饰普通数据类型数据,修改数据都是可以正常监听的
●装饰Object类型数据,支持当前变量修改以及第一层数据的修改的监听,如下当只修改this.obj.sub.b的值是UI不会发生改变,经过打印数据已经被修改成功。

interface ObjT {
  a?:string,
  sub: {
    b:string
  }
}

@Entry
@Component
struct Index {
  @State obj: ObjT = {
    a:'1',
    sub: {
      b: '1'
    }
  }

  build() {
    Row() {
      Column() {
        Button(`按钮${this.obj.a}${this.obj.sub.b}`)
          .onClick(() => {
            this.obj.sub.b = '-'
            this.obj.a = '2'
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

●装饰的对象是array时,可以观察到数组本身的赋值和添加、删除、更新数组的变化。但是数组单项里面的数据发生改变的时候不会被监听到。

●装饰class对象类型的变量时,可以观察到自身的赋值的变化,和其属性赋值的变化。但不支持嵌套的属性赋值观察不到。

class ClassA {
  public value: string;

  constructor(value: string) {
    this.value = value;
  }
}

class Model {
  public value: string;
  public name: ClassA;
  constructor(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值