作用
驱动视图更新,被装饰器
@State修饰的变量发生改变时将会触发视图的重新渲染。
示例代码:
@Entry
@Component
struct Index {
@State message: string = 'hello world';
build() {
Column() {
Text(this.message)
.onClick(() => {
this.message = 'be clicked'
})
}
}
}
渲染结果:
点击Text组件后:
点击事件.onClick()由于message的值发生了变化,并且message变量被@State修饰,所以触发了视图的重新渲染,展示message的最新值。
需要注意的几点
@State装饰器修饰的变量必须初始化,不能为空值,否则会报错。@State支持Object、class、string、number、boolean、enum类型以及这些类型的数组@State修饰的变量为数组或对象时,数组中的值或对象中的属性发生变化时,也可以触发视图的重新渲染。但是,以下两种情况不会触发视图的重新渲染:
- 修饰数组时: 数组中的元素为对象,元素中对象的属性发生变化时不会重新渲染视图。
- 修饰对象时: 对象中的某一个属性若也是一个对象,属性中对象的属性发生变化不会重新渲染视图。