HarmonyOS 鸿蒙Next router 与 navigation 的 replace api 的区别
HarmonyOS 鸿蒙Next router 与 navigation 的 replace api 的区别 需求如下: 一个hap 包含两个 har 分别是 harA 和 harB
harA 包含登录和注册功能,harB 包含主功能比如 主页 和 个人中心
启动显示 harA 的登录页面,点击注册 push 注册页面,点击登录,会跳转 harB 的主页,并销毁当前页面
harB 的个人中心有退出登录,跳转 harA 的登录页面,并销毁当前页面
router.repaceUrl 可以 销毁当前页面,但是用 navigation 的 replacePath 销毁不了当前页面
问题:① harA 跳转 harB 或者 harB 跳转 harA 业务场景(销毁当前页面)下,只能用 router.replaceUrl 吗?
② 在上述业务场景下,harA 或者 harB 在各自内部页面 push,是不是要在 harA 和 harB 有两个 navigation?
更多关于HarmonyOS 鸿蒙Next router 与 navigation 的 replace api 的区别的实战教程也可以访问 https://www.itying.com/category-93-b0.html
针对第一个问题,路由跳转推荐使用Navigation
关键代码:
@Entry({ routeName: 'harA' })
@Component
export struct harA {
@Provide('pageStack') pageStack: NavPathStack = new NavPathStack();
@State data: string = '数据'
@Builder
pageMap(name: string) {
if (name === 'harB') {
harB()
} else if (...)
{
...
}
build() {
Navigation(this.pageStack) {
Button('去HarB').onClick(() => {
let pathInfo: NavPathInfo = new NavPathInfo('HarB', 'A到B的数据', (popInfo: PopInfo) => {
//返回的数据
this.data = popInfo.result as string
})
this.pageStack.pushDestination(pathInfo, true); //方式1跳转:
this.pageStack.replacePath(pathInfo, true); //方式2跳转:这里HarA是Navigation承载了路由跳转的功能,所以即使使用replacePath还是会返回到HarA
})
}.navDestination(this.pageMap)
}
}
}
HarB中:
@Component
export struct HarB {
@State message: string = 'Hello World';
@Consume('pageStack') pageStack: NavPathStack;
build() {
NavDestination() {
Text('HarB')
}
.onBackPressed(() => {
const popDestinationInfo = this.pageStack.pop('b到A的数据', true)
console.log('pop' + '返回值' + JSON.stringify(popDestinationInfo))
return true
})
.onReady((cxt) => {
console.log('②当NavDestination即将构建子组件之前会触发此回调')
})
}
}
对于第二个问题,可独立出一个Har包承载Navigation的跳转功能,这个Har不会随着页面的跳转被杀死,其他的页面跳转都依附于该Har包提供的Navigation能力进行跳转。
更多关于HarmonyOS 鸿蒙Next router 与 navigation 的 replace api 的区别的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
Next router是鸿蒙系统中用于页面跳转和路由管理的高级组件。它提供了更丰富的路由配置和跳转逻辑,允许开发者在应用中定义复杂的页面跳转关系。replace API则是navigation模块中的一个方法,用于在当前导航栈中替换当前页面,而不是简单地压栈或出栈。
具体来说,使用replace API时,当前页面会被新页面替换,用户无法再返回到被替换的页面。这种方式适用于那些不需要保留当前页面状态的场景,比如从登录页面跳转到主页时,通常不希望用户能够返回到登录页面。
而Next router则提供了更灵活的路由控制,它可以根据不同的条件跳转到不同的页面,并支持多种跳转方式(如推入、替换等)。此外,Next router还支持路由拦截、参数传递等高级功能,使得页面跳转更加灵活和可控。
总之,Next router和replace API都是鸿蒙系统中用于页面跳转的工具,但它们的功能和使用场景有所不同。开发者应根据具体需求选择合适的工具来实现页面跳转和路由管理。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,