HarmonyOS 鸿蒙Next ArkTS @Link

HarmonyOS 鸿蒙Next ArkTS @Link 在Dev Studio中使用@State初始化@Link时,有如下图提示:

而官方文档中,对此的描述如下图:

问题: 是ide还没修复,还是?


更多关于HarmonyOS 鸿蒙Next ArkTS @Link的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在entry不能用this来找item,要用$

@Entry
@Component
struct Application_6 {
  @State item: string[] = ['s1', 's2', 's3']

  build() {
    Column() {

      Text($r('app.string.price_str', 100))
      app6({item:$item})

    }
  }
}

@Component
struct app6 {
  @Link item: string[]

  build() {
    Column() {
      Text(this.item.toString())
    }
  }
}

更多关于HarmonyOS 鸿蒙Next ArkTS @Link的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,@Link是ArkTS语言中的一个装饰器,用于实现父子组件之间的双向数据绑定。@Link装饰的变量会自动同步父组件传递的引用类型数据的变化。当父组件的数据发生变化时,子组件中@Link修饰的变量也会随之更新;反之,子组件中@Link修饰的变量发生变化时,父组件的数据也会同步更新。

@Link通常与@State@Prop配合使用。@State用于在父组件中声明状态变量,而@Link则用于在子组件中引用这些状态变量。通过@Link,子组件可以直接修改父组件的状态,从而实现双向数据绑定。

示例:

@Entry
@Component
struct ParentComponent {
  @State message: string = 'Hello, HarmonyOS!'

  build() {
    Column() {
      Text(this.message)
      ChildComponent({ linkMessage: $message })
    }
  }
}

@Component
struct ChildComponent {
  @Link linkMessage: string

  build() {
    Column() {
      Text(this.linkMessage)
      Button('Change Message').onClick(() => {
        this.linkMessage = 'Message Changed!'
      })
    }
  }
}

在这个示例中,ParentComponent中的message状态通过@Link传递给ChildComponent。当ChildComponent中的按钮被点击时,message的值会被更新,并且ParentComponent中的Text组件也会同步显示更新后的内容。

@Link适用于需要父子组件之间共享状态并实现双向数据绑定的场景。

回到顶部