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
    })
  }
}

参考资料

状态管理优秀实践

相关推荐
2501_942389552 小时前
小米寥寥几家车企设计汽车顶棚
华为·编辑器·时序数据库·harmonyos
蓝速科技3 小时前
蓝速科技 RISC-V 鸿蒙信创终端全场景落地方案
科技·harmonyos·risc-v
芒鸽3 小时前
在仓颉语言里造一个没有反射的服务端框架
开发语言·华为·harmonyos
星释3 小时前
鸿蒙智能体开发实战:4.A2A 模式创建智能体
ai·harmonyos·鸿蒙·智能体
binbin_523 小时前
UIAbility 与 WindowStage:窗口创建、加载、销毁的完整链路
开发语言·javascript·深度学习·华为·harmonyos
binbin_524 小时前
WindowStage 多窗口与沉浸式窗口实践:从适配到体验细节
开发语言·javascript·深度学习·华为·harmonyos
Helen_cai4 小时前
OpenHarmony Text 文本组件精细化开发与 API23 + 适配优化
华为·harmonyos
特立独行的猫A4 小时前
HarmonyOS鸿蒙三方库移植框架lycium中的HPKBUILD 与 HPKCHECK 使用指南
harmonyos
特立独行的猫a4 小时前
为 HarmonyOS/OpenHarmony 构建第三方库的解决方案(转自Qt官方Blog)
qt·华为·harmonyos·三方库·鸿蒙pc