HarmonyOS 鸿蒙Next 父组件如何调用子组件内部方法

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

HarmonyOS 鸿蒙Next 父组件如何调用子组件内部方法 现在有用emitter来调用子组件的方法,但是这种方法的话没办法区分哪个子组件,会导致开启动画的时候两个都会执行,所以我想知道该怎么去分别控制。

2 回复

看下如下代码是否可行:

@Component
struct Child {
  @State private text: string = '初始值'
  @State widthSize: number = 250
  @State heightSize: number = 100
  @State rotateAngle: number = 0
  @State flag: boolean = true
  private controller: ChildController = new ChildController();

  aboutToAppear() {
    if(this.controller) {
      //给controller对应的方法赋值
      this.controller.changeStatus = this.changeStatus
    }
  }

  //封装的能力
  private changeStatus = () =>{
    if (this.flag) {
      this.widthSize = 150
      this.heightSize = 60
    } else {
      this.widthSize = 250
      this.heightSize = 100
    }
    this.flag = !this.flag
  }

  build() {
    Column() {
      Button('change size')
        .onClick(() => {

        })
        .margin(30)
        .width(this.widthSize)
        .height(this.heightSize)
        .animation({
          duration: 2000,
          curve: Curve.EaseOut,
          iterations: 3,
          playMode: PlayMode.Normal
        })

    }.width('100%').margin({ top: 20 })
  }
}

//定义controller对象
class ChildController {
  changeStatus = () => {}
}

@Component
struct Parent {
  private ChildRef = new ChildController()
  private ChildRef1 = new ChildController()
  build() {
    Column() {
      Text('调用Child的changeStatus').fontSize('18vp').fontColor(Color.Gray)
      Divider()
      Child({ controller:this.ChildRef })
      Button('Parent调用childer的changeStatus').onClick(() => {
        this.ChildRef.changeStatus()
      })
      Child({ controller:this.ChildRef1 })
      Button('Parent调用childer的changeStatus').onClick(() => {
        this.ChildRef1.changeStatus()
      })
    }
    .justifyContent(FlexAlign.Center)
    .width("100%")
    .height("100%")
  }
}

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


在HarmonyOS鸿蒙Next系统中,父组件调用子组件内部方法通常涉及组件间的通信和数据传递机制。以下是如何实现这一功能的基本步骤:

  1. 定义接口或方法:首先,在子组件中定义一个公共接口或方法,该方法需要被父组件调用。这可以通过在子组件的类中声明一个public方法来实现。

  2. 获取子组件实例:在父组件中,通过布局文件或代码逻辑获取子组件的实例。这通常通过组件的ID或类型来完成。

  3. 调用子组件方法:一旦获得子组件的实例,父组件就可以直接调用该实例上的公共方法。这类似于在Java或其他面向对象编程语言中调用对象的方法。

  4. 注意权限和封装:确保子组件的方法是可访问的,并且符合组件间的封装原则。如果方法涉及敏感操作或数据,应考虑使用更安全的通信方式,如事件总线或消息传递。

  5. 处理异常情况:在调用子组件方法时,应做好异常处理,以应对可能的错误或异常情况。

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

回到顶部