HarmonyOS父子组件传递参数

HarmonyOS父子组件传递参数

1. 使用@State@Prop进行父子组件传递———注意是单向同步

@Prop装饰器:父子单向同步

  • 注意:只支持单向同步,同时也只能支持string\number\boolean\enum比较简单的类型。
    在这里插入图片描述

代码

// 使用 props 进行父子组件传值
@Component
struct SonCom {
   
   
  // 父子间传递过来的数据使用 @Prop 进行接受
  @Prop sonCar: string
  // 修改传递的参数
  changeInfo = (info: string)=> {
   
   }
  build() {
   
   
    Column() {
   
   
      Text(`这是子组件的盒子--- ${
     
     this.sonCar}`)

      Button('子组件修改父组件的数据').onClick((event: ClickEvent) => {
   
   
        this.changeInfo('吉利银河 L7 ----' + Math.ceil(Math.random() * 10))
      })
    }
    .width('100%')
    .height(100)
    .backgroundColor(Color.Orange)
  }
}


@Entry
@Component
struct PropsPage {
   
   
  @State info: string = '比亚迪 宋'

  changeInfo = (newInfo: string)=>{
   
   
    this.info = newInfo
  }

  build() {
   
   
    Column({
    
    space: 20}) {
   
   
      Text(`这是父组件的盒子 ${
     
     this.info}`)

      Button('修改父组件的数据').onClick((event: ClickEvent) => {
   
   
        this.info = '领克 08---' + Math.ceil(Math.random() * 10)
      })
      // 这是子组件
      SonCom({
   
   
        sonCar: this.info,
        changeInfo: this.changeInfo
      })
    }
    .width('100%')
    .height(300)
    .backgroundColor(Color.Pink)
  }
}

演示
在这里插入图片描述

2. @Link装饰器:父子双向同步

@Link装饰器:父子双向同步

  • 注意
    在这里插入图片描述
// 子组件
@Component
struct ChildCom {
   
   
  @Link list: number[]

  build() {
   
   
    Column() {
   
   

      List({
   
   space: 10}) {
   
   
        ForEach
### HarmonyOS子组件传递函数方法示例 在 HarmonyOS 开发环境中,为了使父组件能够向子组件传递函数并允许子组件调用这些函数作为回调机制,通常采用特定的方式处理。下面展示了一个具体的例子来说明这一过程。 #### 定义父组件子组件间的交互逻辑 假设有一个场景,其中父组件 `ParentComponent` 需要将一个名为 `handleClick` 的点击事件处理器传递子组件 `ChildComponent` 使用: ```typescript // ParentComponent.ts import ChildComponent from './ChildComponent'; export default { name: 'ParentComponent', methods: { handleClick(message) { console.log(`Message received by parent component: ${message}`); } }, render() { return ( <div> {/* 将 handleClick 方法作为属性传递 */} <ChildComponent onClick={(msg) => this.handleClick(msg)} /> </div> ); } } ``` 对于接收此函数的子组件来说,则需设置相应的接口用于接受来自外部(即父级)入的数据或行为定义: ```typescript // ChildComponent.ts export default { props: ['onClick'], // 接收父组件传递过来的方法 render() { const buttonClicked = () => { // 调用父组件传递下来的方法,并附带参数 this.onClick('Hello from child!'); }; return ( <button type="button" onClick={buttonClicked}> Click Me! </button> ); } }; ``` 上述代码片段展示了如何利用 TypeScript 编写 HarmonyOS 应用程序中的父子组件通信模式[^1]。这里的关键在于通过 `props` 属性让子组件知道它应该期待哪些输入;而父组件则负责实际提供那些——在这个案例里就是一个可被调用的 JavaScript 函数。 此外,在某些情况下可能还需要考虑到上下文环境的变化影响到 `this` 关键字的行为。如果遇到此类问题,可以通过创建额外的对象实例或将方法绑定至当前作用域等方式加以解决[^3]。 #### 处理复杂状态管理需求 当涉及到更复杂的跨多个层次结构播的状态管理和响应式编程时,开发者可能会倾向于使用全局事件总线或其他高级框架特性来进行解耦合设计。例如,基于发布/订阅模型实现的消息队列可以帮助简化不同部分间的信息交换流程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值