《鸿蒙第一行代码》第九课 状态管理Link

62 阅读1分钟
《鸿蒙第一行代码》第九课 状态管理Link

@Link不能自己初始化,需要@State传值初始化,并且它们会相互影响

简单示例代码:

@Entry
@Component
struct Link_Modifier {
  @State date: string = "时间:" + new Date().getTime(); // 定义@State变量

  build() {
    Column({space: 10}) {

      Text(`父组件【${this.date}】`)
        .fontSize(20)
        .backgroundColor(Color.Pink)

      LikeItem({time: $date})                               // 初始化子组件time属性使用$符号
      LikeItem({time: $date})                               // 初始化子组件time属性使用$符号

      Button('更新时间')
        .onClick(() => {
          this.date = "时间:" + new Date().getTime();   // 变更date,子组件的对应属性也变化
        })
    }
    .width('100%')
    .height('100%')
    .padding(10)
  }
}

@Component struct LikeItem {

  @Link time: string;

  build() {
    Text(`子组件【${this.time}】`)
      .fontSize(20)
      .backgroundColor(Color.Grey)
      .onClick(() => {
        this.time = "时间:" + new Date().getTime();     // 变更time,父组件的对应属性也变化
      })
  }
}
《鸿蒙第一行代码》项目代码结构图:

在这里插入图片描述 有需要《鸿蒙第一行代码》项目源码的私信我,我每天都看私信的