HarmonyOS 鸿蒙Next 父子之间方法调用
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
参考这个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)的框架,用于实现不同组件之间的数据和方法调用。
对于父子组件之间的方法调用,可以采用以下几种方式:
-
事件传递:父组件可以通过触发事件并携带参数的方式,让子组件监听该事件并响应。子组件在事件处理函数中实现对应的方法调用。
-
属性绑定:父组件可以通过属性绑定的方式,将需要调用的方法或相关数据传递给子组件。子组件在接收到属性变化后,执行相应的方法。
-
依赖注入:虽然鸿蒙系统没有直接提供依赖注入的框架,但可以通过设计组件间的依赖关系,在父组件创建子组件时,将需要的方法或对象传递给子组件。
-
服务调用:如果父子组件间的调用关系较为复杂,可以考虑将方法封装为服务,父组件通过调用服务的方式间接实现子组件的方法调用。
需要注意的是,鸿蒙系统的组件通信机制可能随着版本的更新而有所变化,具体实现方式需参考最新的鸿蒙开发文档。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,