HarmonyOS 鸿蒙Next 父组件想调用子组件的方法 或者 子组件想调用父组件的方法
HarmonyOS 鸿蒙Next 父组件想调用子组件的方法 或者 子组件想调用父组件的方法
父组件想调用子组件的方法 或者 子组件想调用父组件的方法 该怎么用
2 回复
父组件调用子组件的方法参考以下代码:
[@Component](/user/Component)
struct Child {
[@State](/user/State) private text: string = '初始值'
private controller: ChildController = new ChildController();
aboutToAppear() {
if(this.controller) {
this.controller.changeText = this.changeText
}
console.log('aaa')
}
private changeText = (value: string) =>{
this.text = value
console.log('bbb')
}
build() {
Column() {
Text(this.text)
}
}
}
class ChildController {
changeText = (value: string) => {
console.log('11111')
}
}
export let ChildRef = new ChildController()
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Parent {
// ChildRef = new ChildController()
[@State](/user/State) noShow: boolean = false
build() {
Column() {
Text('获取Child的exposeMethods!').fontSize('18vp').fontColor(Color.Gray)
Divider()
Child({ controller: ChildRef })
Child()
Button('Parent调用childer的changeText').onClick(() => {
ChildRef.changeText('Parent调用childer的changeText')
})
}
}
}
子组件调用父组件的方法可参考[@BuilderParam](/user/BuilderParam)装饰器:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builderparam-V5
更多关于HarmonyOS 鸿蒙Next 父组件想调用子组件的方法 或者 子组件想调用父组件的方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,实现父组件调用子组件方法或子组件调用父组件方法,可以通过以下方式实现:
父组件调用子组件方法:
- 在子组件中定义并暴露一个公共方法。
- 在父组件中通过
@ref
引用子组件实例。 - 使用引用实例直接调用子组件的方法。
示例代码:
<!-- 子组件 -->
<element name="Child">
<property name="method" type="Function"></property>
<template>
<!-- 子组件内容 -->
</template>
</element>
<!-- 父组件 -->
<Child ref="childRef"></Child>
<button @click="callChildMethod">调用子组件方法</button>
<script>
export default {
methods: {
callChildMethod() {
this.$refs.childRef.someChildMethod();
}
}
}
</script>
子组件调用父组件方法:
- 在父组件中定义一个公共方法,并传递给子组件。
- 在子组件中通过属性接收父组件的方法,并调用。
示例代码:
<!-- 父组件 -->
<Child :parentMethod="parentMethod"></Child>
<script>
export default {
methods: {
parentMethod() {
// 父组件方法内容
}
}
}
</script>
<!-- 子组件 -->
<template>
<button @click="callParentMethod">调用父组件方法</button>
</template>
<script>
export default {
props: {
parentMethod: {
type: Function,
required: true
}
},
methods: {
callParentMethod() {
this.parentMethod();
}
}
}
</script>
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html