HarmonyOS(35) @State使用注意事项

@State使用注意事项

注意事项

HarmonyOS鸿蒙学习笔记(5)@State作用说明和简单案例一文中简单介绍了@State的使用方法,但是@State装饰器使用有一些注意事项:在应用开发中,应避免在循环逻辑中频繁读取状态变量,而是应该放在循环外面读取。

反例

java 复制代码
@Entry
@Component
struct Index {
  @State message: string = '';

  build() {
    Column() {
      Button('点击打印日志')
        .onClick(() => {
          for (let i = 0; i < 10; i++) {
            //循环体中使用message
            hilog.info(0x0000, 'TAG', '%{public}s', this.message);
          }
        })
        .width('90%')
        .backgroundColor(Color.Blue)
        .fontColor(Color.White)
        .margin({
          top: 10
        })
    }
    .justifyContent(FlexAlign.Start)
    .alignItems(HorizontalAlign.Center)
    .margin({
      top: 15
    })
  }
}

正例

java 复制代码
@Entry
@Component
struct Index {
  @State message: string = '';

  build() {
    Column() {
      Button('点击打印日志')
        .onClick(() => {
          //循环体外提前访问message变量
          let logMessage: string = this.message;
          for (let i = 0; i < 10; i++) {
            hilog.info(0x0000, 'TAG', '%{public}s', logMessage);
          }
        })
        .width('90%')
        .backgroundColor(Color.Blue)
        .fontColor(Color.White)
        .margin({
          top: 10
        })
    }
    .justifyContent(FlexAlign.Start)
    .alignItems(HorizontalAlign.Center)
    .margin({
      top: 15
    })
  }
}

参考资料

状态管理优秀实践

相关推荐
被开发耽误的大厨6 小时前
鸿蒙ArkUI 基础篇-06-组件基础语法-Column/Row/Text
华为·harmonyos
HarderCoder7 小时前
重学仓颉-7类与接口完全指南:从基础到高级特性
harmonyos
HarderCoder11 小时前
重学仓颉-6枚举与模式匹配完全指南
harmonyos
li理11 小时前
鸿蒙应用开发完全指南:深度解析UIAbility、页面与导航的生命周期
前端·harmonyos
HarderCoder13 小时前
重学仓颉-5结构体(Struct)完全指南:从基础到高级用法
harmonyos
HarmonyOS小助手14 小时前
【推荐+1】HarmonyOS官方模板优秀案例 (第4期:餐饮行业 · 美食菜谱)
harmonyos·鸿蒙·鸿蒙生态
HarderCoder14 小时前
重学仓颉-4函数系统完全指南
harmonyos
HarderCoder19 小时前
重学仓颉-3基本数据类型详解:从理论到实践的全面指南
harmonyos
鸿蒙小灰20 小时前
鸿蒙OpenCV移植技术要点
opencv·harmonyos
鸿蒙先行者20 小时前
鸿蒙分布式能力调用失败解决方案及案例
分布式·harmonyos