HarmonyOS 多个Component之间可以相互调用方法吗

@Component
export struct A {
  funA() {
  }
}

@Component
export struct B {
  build() {
    Image().onClick(() => { // 这里如何执行到A中的funA方法? } ) } }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
HarmonyOS
2024-12-18 16:37:46
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

对于两个或多个组件都需要使用到的某个功能,建议 可以将该功能单独抽离出来进行封装成一个view模块或工具模块,在组件需要使用时分别导入该模块。

import { get, getA } from './IndexPage'

@Component
export struct getB {
  build() {
    Column() {
      Text().onClick(() => {
        // 这里如何执行到A中的funA方法?
        get([]);
      })
    }
  }
}

//IndexPage.ets
export function get(array:[]){
  for (let index = 0; index < array.length; index++) {
    const element = array[index];
  }
}

export function getA(array:[]){
  for (let index = 0; index < array.length; index++) {
    const element = array[index];
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

如果需要在B中变更A的组件属性可以使用@Link状态变化这种,参考下demo:

@Entry
@Component
struct Index {
  @State msg: string = "组件消息"

  build() {
    Column() {
      Text("page Index").fontSize(50).fontWeight(FontWeight.Bold)
      ComponentA({ msg: this.msg })
      ComponentB({ msg: this.msg })
    }
  }
}

@Component
export struct ComponentB {
  @Watch("changeData") @Link msg: string

  changeData() {
    console.log("ComponentB change")
  }

  build() {
    Text(this.msg).fontSize(50).fontWeight(FontWeight.Bold)
  }
}

@Component
export struct ComponentA {
  @Link msg: string

  build() {
    Column() {
      Text(this.msg).fontSize(50).fontWeight(FontWeight.Bold)
      Button("ComponentB change").onClick(() => {
        this.msg = "更新数据"
      })
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
分享
微博
QQ
微信
回复
2024-12-18 19:33:11


相关问题
flutter和鸿蒙如何相互调用
14836浏览 • 3回复 待解决
HarmonyOS page之间相互传值
260浏览 • 1回复 待解决
HarmonyOS App之间相互跳转问题
530浏览 • 1回复 待解决
px和vp之间如何相互转换
4142浏览 • 1回复 待解决
c++侧可以直接调用ts的static方法
2786浏览 • 1回复 待解决
HarmonyOS so加载时可以多个文件注册
372浏览 • 1回复 待解决
ohpm仓库地址可以设置多个
582浏览 • 1回复 待解决
多个pageAbility之间如何共享变量
2407浏览 • 1回复 待解决
HarmonyOS Image组件能调用异步方法
641浏览 • 1回复 待解决
HarmonyOS通过方法调用的loading有
921浏览 • 0回复 待解决
Uint8Array和string之间相互转换
3969浏览 • 1回复 待解决
HarmonyOS 多个HSP之间如何互相通讯
890浏览 • 1回复 待解决