HarmonyOS 鸿蒙Next 在子组件写了一个方法,在父组件想直接调用这个方法,该如何实现呢?

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

HarmonyOS 鸿蒙Next 在子组件写了一个方法,在父组件想直接调用这个方法,该如何实现呢?

在子组件写了一个方法,在父组件想直接调用这个方法,该如何实现呢?

3 回复

参考:

[@Component](/user/Component)
struct Child {
 [@State](/user/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()

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Parent {
 // ChildRef = new ChildController()
 [@State](/user/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鸿蒙系统中,若想在父组件中直接调用子组件的方法,可以通过以下几种方式实现:

  1. 接口回调: 子组件定义一个回调接口,并在子组件内部实现该接口的具体方法。父组件实现该接口,并将实现传递给子组件。子组件在需要时调用接口的回调方法,这样父组件就能间接调用到子组件的方法。

  2. 公共父类: 如果父组件和子组件有共同的父类,可以将方法定义在这个公共父类中。然后,父组件和子组件都继承这个公共父类,从而可以在父组件中直接调用从公共父类继承的方法(当然,这个方法需要是public或protected)。

  3. 事件机制: 使用鸿蒙系统提供的事件机制,子组件在需要被调用时发送一个特定的事件。父组件监听这个事件,并在事件触发时执行相应的逻辑。这种方法更松散,适合组件间解耦。

  4. 依赖注入: 在子组件中定义一个方法,并在父组件创建子组件实例时通过依赖注入的方式将父组件的某些功能或方法传递给子组件。这样,虽然父组件不能直接调用子组件的方法,但可以通过这种方式间接控制子组件的行为。

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

回到顶部