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

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

@Component
export struct B {
  build() {
    Image().onClick(() => { // 这里如何执行到A中的funA方法? } ) } }
HarmonyOS
8h前
浏览
收藏 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];
  }
}

如果需要在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 = "更新数据"
      })
    }
  }
}
分享
微博
QQ
微信
回复
5h前
相关问题
flutter和鸿蒙如何相互调用
14315浏览 • 3回复 待解决
px和vp之间如何相互转换
2852浏览 • 1回复 待解决
c++侧可以直接调用ts的static方法
2125浏览 • 1回复 待解决
ohpm仓库地址可以设置多个
147浏览 • 1回复 待解决
HarmonyOS Image组件能调用异步方法
261浏览 • 1回复 待解决
HarmonyOS 多个HSP之间如何互相通讯
435浏览 • 1回复 待解决
HarmonyOS通过方法调用的loading有
420浏览 • 0回复 待解决
多个pageAbility之间如何共享变量
1698浏览 • 1回复 待解决
HarmonyOS Webkit ets之间调用
220浏览 • 1回复 待解决
HarmonyOS C可以直接调用数据库
143浏览 • 0回复 待解决
ATSUI可以调用JSUI的控件
2094浏览 • 0回复 待解决
鸿蒙可以直接调用系统相机
8660浏览 • 1回复 待解决
可以调用Android现有的库
7374浏览 • 1回复 待解决