鸿蒙开发之@State的使用

194 阅读1分钟

作用

驱动视图更新,被装饰器@State修饰的变量发生改变时将会触发视图的重新渲染。

示例代码:

@Entry
@Component
struct Index {
  @State message: string = 'hello world';

  build() {
    Column() {
      Text(this.message)
        .onClick(() => {
          this.message = 'be clicked'
        })
    }
  }
}

渲染结果:

图片.png

点击Text组件后:

图片.png

点击事件.onClick()由于message的值发生了变化,并且message变量被@State修饰,所以触发了视图的重新渲染,展示message的最新值。

需要注意的几点

  1. @State装饰器修饰的变量必须初始化,不能为空值,否则会报错。
  2. @State支持Object、class、string、number、boolean、enum类型以及这些类型的数组
  3. @State修饰的变量为数组对象时,数组中的值或对象中的属性发生变化时,也可以触发视图的重新渲染。但是,以下两种情况不会触发视图的重新渲染:
  • 修饰数组时: 数组中的元素为对象,元素中对象的属性发生变化时不会重新渲染视图。
  • 修饰对象时: 对象中的某一个属性若也是一个对象,属性中对象的属性发生变化不会重新渲染视图。