HarmonyOS 父组件如何响应子组件内的事件方法 ,子组件如何响应父组件内的事件方法?

HarmonyOS 父组件如何响应子组件内的事件方法 ,子组件如何响应父组件内的事件方法。


HarmonyOS
2024-10-16 09:17:23
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

不支持在父组件中调用子组件的方法。可以通过状态变量来同步数据,修改一个数据源中的项,只会影响到这一项的组件的重新构建,以此来处理该类问题。参考链接:https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/quick-start/arkts-link.md/

可以定义一个controller类,在controller类中定义和子组件中类型相同的方法,在子组件中将实际封装的方法给到controller。父组件在使用时,new一个controller对象然后转入子类中,在父组件中调用controller对应的方法即可。

参考代码:

@Component  
struct Child  {  
  @State private text: string = '初始值'  
  private controller: ChildController = new ChildController();  
  aboutToAppear() {  
    if(this.controller) {  
//给controller对应的方法赋值  
      this.controller.changeText = this.changeText  
    }  
  }  
//封装的能力  
  private changeText = (value: string) =>{  
    this.text = value  
  }  
  
  build() {  
    Column() {  
      Text(this.text)  
    }  
  }  
}  
//定义controller对象  
class ChildController {  
  changeText = (value: string) => {}  
}  
@Entry  
@Component  
struct Parent {  
  private  ChildRef = new ChildController()  
  build() {  
    Column() {  
      Text('调用Child的changeText').fontSize('18vp').fontColor(Color.Gray)  
      Divider()  
      Child({ controller:this. ChildRef })  
      Button('Parent调用childer的changeText').onClick(() => {  
        this.ChildRef.changeText('Parent调用childer的changeText')  
      })  
    }  
    .justifyContent(FlexAlign.Center)  
    .width("100%")  
    .height("100%")  
  }  
}
分享
微博
QQ
微信
回复
2024-10-16 18:24:55
相关问题
组件如何处理组件点击事件
2687浏览 • 1回复 待解决
组件调用组件方法
1229浏览 • 1回复 待解决
组件调用组件方法
238浏览 • 1回复 待解决
组件事件可以传到组件
611浏览 • 1回复 待解决
组件事件能否到传递组件
2344浏览 • 1回复 待解决
设置组件宽度不超出组件
551浏览 • 1回复 待解决
组件组件传递函数
241浏览 • 1回复 待解决