HarmonyOS 鸿蒙Next $isPlaying this.isPlaying 两种写法,作用一样吗?

HarmonyOS 鸿蒙Next PlayButton({ buttonPlaying: $isPlaying })与PlayButton({ buttonPlaying: this.isPlaying })两种写法,作用一样吗?

@Link装饰器 示例Demo:

@Entry
@Component
struct Player {
  @State isPlaying: boolean = false
  build() {

    Column(){
      Column() {
        Button('Parent:' + this.isPlaying)
          .margin(15)
          .onClick(() => {
            this.isPlaying = !this.isPlaying;
          })

        Text(`Player is ${this.isPlaying ? '' : 'not'} playing`)
          .fontSize(18)
      }
      .border({
        width:1,
        color:Color.Brown
      })
      .backgroundColor(Color.Gray)

      PlayButton({ buttonPlaying: $isPlaying })

    }

  }
}

@Component
struct PlayButton {
  [@Link](/user/Link) buttonPlaying: boolean

  build() {
    Column() {
      Button(this.buttonPlaying ? 'pause' : 'play')
        .margin(20)
        .onClick(() => {
          this.buttonPlaying = !this.buttonPlaying;
        })
    }
  }
}


更多关于HarmonyOS 鸿蒙Next $isPlaying this.isPlaying 两种写法,作用一样吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next $isPlaying this.isPlaying 两种写法,作用一样吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next PlayButton({ buttonPlaying: $isPlaying })PlayButton({ buttonPlaying: this.isPlaying })两种写法的作用并不完全相同,主要体现在数据绑定和上下文引用上。

  1. Next PlayButton({ buttonPlaying: $isPlaying }):这种写法可能暗示着$isPlaying是一个全局状态或者通过某种特殊语法(如Vue.js中的计算属性或响应式数据)引用的变量。在鸿蒙开发中,如果这是特定框架或库的语法,它可能表示$isPlaying是从某个全局或父级作用域中获取的值,而非当前组件的局部变量。

  2. PlayButton({ buttonPlaying: this.isPlaying }):这种写法明确地使用this关键字引用当前组件实例的isPlaying属性。在鸿蒙组件化开发中,this通常指向当前组件的实例,因此this.isPlaying表示当前组件内的一个状态或属性。

总结来说,两者在数据绑定和上下文引用上存在差异。$isPlaying可能是全局或父级状态,而this.isPlaying是当前组件的局部状态。如果$isPlaying是鸿蒙框架支持的全局状态访问语法,则两者在功能上可能达到类似效果,但语义和引用范围不同。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部