HarmonyOS 在@State和@Prop的单向传输场景?

@State 和 @Prop 的单向传输场景中,@State 变量只能定义在 @Entry 标记的页面中,而不能定义在 @Component 中;是否可以理解为 Harmony 框架的设计如此?

阅读 493
1 个回答

@Prop和@State均可定义在 @Component 中。可参考如下代码:

(注释处同步放开,可测试逆向同步的效果)

1.TestComponentStatePage.ets

import { ComponentStateParent } from '../component/ComponentStateParent'

@Entry
@Component
struct TestComponentStatePage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      ComponentStateParent()
    }
    .margin({ top: 300 })
    .height('100%')
    .width('100%')
  }
}

2.ComponentStateParent.ets

import { ComponentState } from '../component/ComponentState'

@Component
export struct ComponentStateParent {
  // @Prop textTab: string = "666777";
  @State textTab: string = "666777";

  build() {
    Column() {
      Text('内容1').onClick(() => {
        this.textTab = "888"
      })

      ComponentState({ text: this.textTab });
    }
  }
}

3.ComponentState.ets

import router from '@system.router';

@Component
export struct ComponentState {
  // @State text: string = '我是内容'
  @Prop text: string = '我是内容'

  build() {
    Column() {
      Text(this.text)
        .fontSize(20)
        .margin({ top: 10, bottom: 10 })
        .onClick(() => {
          this.text = "999"
        })
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进