解决方案参考示例如下:@Entry @Component struct NavigationExample { pageInfo: NavPathStack = new NavPathStack() @Builder pageMap(name: string) { if (name === 'pageOne') { PageOne() } else if (name === 'pageTwo') { PageTwo() } } build() { Navigation(this.pageInfo) { Column() { Button('StartTest', { stateEffect: true, type: ButtonType.Capsule }) .width('80%') .height(40) .margin(20) .onClick(() => { this.pageInfo.pushPath({ name: 'pageOne' }); }) } } .title('NavIndex') .navDestination(this.pageMap) } }// PageOne.ets class TmpClass { test: string = '<?ovital_ct name="ovital_sample">{"user":"","birthday":"","sex":"男","Marital_status":false,"work_address":"0"}' } @Component export struct PageOne { pageInfo: NavPathStack = new NavPathStack(); @State message: string = 'Hello World' build() { NavDestination() { Column() { Text(this.message) .width('80%') .height(50) .margin(10) Button('pushPathByName', { stateEffect: true, type: ButtonType.Capsule }) .width('80%') .height(40) .margin(10) .onClick(() => { let tmp = new TmpClass() this.pageInfo.pushPathByName('pageTwo', tmp, (popInfo) => { this.message = '[pushPathByName]last page is: ' + popInfo.info.name + ', result: ' + JSON.stringify(popInfo.result); }); }) }.width('100%').height('100%') }.title('pageOne') .onReady((context: NavDestinationContext) => { this.pageInfo = context.pathStack; }) } }// PageTwo.ets @Component export struct PageTwo { pathStack: NavPathStack = new NavPathStack() build() { NavDestination() { Column() { Button('popToName', { stateEffect: true, type: ButtonType.Capsule }) .width('80%') .height(40) .margin(20) .onClick(() => { this.pathStack.popToName('pageOne'); // 将第一个名为name的NavDestination页面移到栈顶,将处理结果传入push的onPop回调中。 }) }.width('100%').height('100%') }.title('pageTwo') .onReady((context: NavDestinationContext) => { this.pathStack = context.pathStack console.log(JSON.stringify(this.pathStack.getParamByName('pageTwo'))) }) } }
解决方案
参考示例如下: