HarmonyOS 鸿蒙Next 是否能定义一个带返回的组件

发布于 1周前 作者 nodeper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 是否能定义一个带返回的组件

是否能定义一个带返回的组件或是Builder,自己执行一段程序,然后返回一个结果

@Builder 
MenuIconBuild(text:string, action ? : CallBack<String >){
  Column() {
    Text(text)
  }.onClick(() => {
    console.log('输出');
    action('111');
  })

  this.MenuIconBuild('111', () => {
  })
  

更多关于HarmonyOS 鸿蒙Next 是否能定义一个带返回的组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

@Component

struct Child {

@State private text: string = '初始值'

private controller: ChildController = new ChildController();

aboutToAppear() {

// 子组件调用的方法为父组件传递过来的方法

this.controller.testFunc('im the son')

// 将testFunc方法用子组件方法进行覆盖

if (this.controller) {

this.controller.testFunc = this.testFunc

}

}

// 子testFunc方法的具体实现

testFunc = (value: string) => {

this.text = value

console.log('[testFunc]testFunc call from Child')

return "[testFunc]我是儿子的方法"

}

build() {

Column() {

Text(this.text)

}

}

}

// 定义声明testFunc方法的controller

class ChildController {

// 定义子testFunc方法同名的空方法

testFunc = (value: string) => {

console.log('[testFunc]testFunc: ' + value)

return "[testFunc]我是公共定义的空方法"

}

}

@Entry

@Component

struct Parent {

private ChildRef = new ChildController()

aboutToAppear(): void {

this.ChildRef.testFunc = this.testFunc

}

// 父testFunc方法的具体实现

testFunc = (value: string) => {

console.log('[testFunc]我是父亲的testFunc方法 : ' + value)

return "[testFunc]我是父亲的方法"

}

build() {

Column() {

Text('获取Child的exposedMethods!').fontSize('18vp').fontColor(Color.Gray)

Divider()

// 将父方法作为参数传递给子组件

Child({ controller: this.ChildRef })

// 父组件调用子组件的方法

Button('Parent调用children的方法').onClick(() => {

let text = this.ChildRef.testFunc('Parent调用children的方法')

console.info('[testFunc]testFunc info:' + JSON.stringify(text))

})

}

}

}

更多关于HarmonyOS 鸿蒙Next 是否能定义一个带返回的组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 支持定义带返回的组件,但并非通过传统意义上的函数返回值机制。在鸿蒙系统中,组件间的交互通常依赖于Intent或者特定的通信机制。

要定义一个带返回的组件,你可以利用服务(Service)或者特定的组件间通信(Inter-Component Communication, ICC)机制。例如,你可以启动一个组件并传递一个回调接口,该接口在目标组件完成特定任务后被调用,从而实现“返回”的效果。这通常涉及到在组件间传递一个实现了特定接口的AIDL(Android Interface Definition Language,虽然鸿蒙有其自己的IPC机制,但概念类似)对象。

具体到实现,你可能需要在组件A中定义一个AIDL接口,并实现该接口的一个Stub类,然后在组件B中接收这个接口并调用相应的方法来实现返回功能。需要注意的是,鸿蒙系统的IPC机制与Android有所不同,因此在实际开发中需要参考鸿蒙的官方文档。

此外,鸿蒙系统也提供了DataAbility和Ability等机制来实现数据的读写和组件间的交互,你可以根据实际需求选择合适的机制。

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

回到顶部