最近都在开发鸿蒙next的应用,记录下来关于子组件调用父组件的方法
以Tabs为例
首先父组件是Index,里面有一个子组件mainView,实现mainView调用了父组件changeTab的方法。
@Entry
@Component
struct Index {
private tabsController: TabsController = new TabsController()
build() {
Column() {
Tabs({ barPosition: BarPosition.Start, controller: this.tabsController }) {
TabContent() {
mainView({
//实现跳转
changeTab: (index:number) => {
this.changeTab(index)
}
})
}.tabBar('概览').backgroundColor(Color.Pink)
TabContent() {
DeviceInfoView()
}.tabBar('设备')
}
.vertical(false).scrollable(true).barMode(BarMode.Fixed)
.barWidth('100%').barHeight('10%').animationDuration(400).scrollable(true).barMode(BarMode.Scrollable)
.onChange((index: number) => {
console.info(index.toString())
})
.width('100%').backgroundColor(0xF5F5F5)
}.width('100%').height("100%")
}
changeTab(index: number) {
this.tabsController.changeIndex(index)
}
}
mainView 子组件
@Entry
@Component
struct mainView {
changeTab?: (index: number) => void
build() {
Row() {
Column() {
Button().onClick(()=>{
//根据你提供的index
this.changeTab!(1)
})
}
.width('100%')
}
.height('100%')
}
}
我建了一个鸿蒙开发者交流群,欢迎大家加入交流鸿蒙开发