HarmonyOS 鸿蒙Next 父子之间方法调用

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 父子之间方法调用

@Entry @Component @Preview struct Parent { onPageShow(): void { BL.debug(‘Parent*onPageShow’) }

build() { RelativeContainer() { Child().margin({ bottom: 100 }); }.width(‘100%’).height(‘100%’) } }

// 然后有子组件 @Entry @Component @Preview struct Child { onPageShow(): void { BL.debug(‘Child*onPageShow’) }

public childFunc1() { BL.debug(‘Child*childFunc1’) }

build() { } }

两个问题咨询 问题一:每次Parent页面展示时候,Parent的onPageShow会被调用,但是child的onPageShow不会被调用。 如何让child的onPageShow被调用,或者我在child里面如何知道页面展示了? 问题二:如上父子关系,能否在父Parent里面调用子Childd childFunc1方法?


更多关于HarmonyOS 鸿蒙Next 父子之间方法调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

参考这个demo

@Component
struct Child {
  @State private text: string = '初始值'
  private controller: ChildController = new ChildController();

  aboutToAppear() {
    if(this.controller) {
      this.controller.changeText = this.changeText
    }
    console.log('aaa')
  }

  private changeText = (value: string) =>{
    this.text = value
    console.log('bbb')
  }

  build() {
    Column() {
      Text(this.text)
    }
  }
}

class ChildController {
  changeText = (value: string) => {
    console.log('11111')
  }
}

export let ChildRef = new ChildController()

@Component
@Entry
struct Parent {
  @State noShow: boolean = false

  build() {
    Column() {
      Text('获取Child的exposeMethods!').fontSize('18vp').fontColor(Color.Gray)
      Divider()
      Child({ controller: ChildRef })
      Child()
      Button('Parent调用childer的changeText').onClick(() => {
        ChildRef.changeText('Parent调用childer的changeText')
      })
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 父子之间方法调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,父子组件之间的方法调用通常依赖于鸿蒙的组件通信机制。鸿蒙系统提供了一套组件间通信(Inter-Component Communication, ICC)的框架,用于实现不同组件之间的数据和方法调用。

对于父子组件之间的方法调用,可以采用以下几种方式:

  1. 事件传递:父组件可以通过触发事件并携带参数的方式,让子组件监听该事件并响应。子组件在事件处理函数中实现对应的方法调用。

  2. 属性绑定:父组件可以通过属性绑定的方式,将需要调用的方法或相关数据传递给子组件。子组件在接收到属性变化后,执行相应的方法。

  3. 依赖注入:虽然鸿蒙系统没有直接提供依赖注入的框架,但可以通过设计组件间的依赖关系,在父组件创建子组件时,将需要的方法或对象传递给子组件。

  4. 服务调用:如果父子组件间的调用关系较为复杂,可以考虑将方法封装为服务,父组件通过调用服务的方式间接实现子组件的方法调用。

需要注意的是,鸿蒙系统的组件通信机制可能随着版本的更新而有所变化,具体实现方式需参考最新的鸿蒙开发文档。

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

回到顶部