页面之间的导航可以通过页面路由router模块来完成。页面路由模块根据页面的URL找到目标页面,从而实现跳转。通过页面路由模块,可以使用不同的URL访问不同的页面,包括跳转到Ability内的指定页面、用Ability内的某个页面替换当前页面、返回上一个页面或指定的页面。通过params来传递参数。
在使用页面路由需要导入router模块,代码如下:
//导入router模块
import router from 'ohos.router'
页面跳转有4种方式:
1.router.push()
通过调用router.push()方法,跳转到Ability内的指定页面。每一次调用router.push()方法,都会新建一个页面。默认情况下,页面栈数量会加1,页面栈支持的最大页面数量为32。
如果页面栈的数量超过了32,可以通过使用router.clear()方法清除页面栈中的所有历史页面。
代码如下:
router.push({
url:'pages/fenghua',
params:{
src:'Index 页面传递过来的数据',
}
})
2.router.push()加mode参数
router.push()方法新增加了mode参数,可以将mode参数配置为router.RouterMode.Single 单实例模式和router。routerModeStandard标准模式。
在 单实例模式下,如果目标页面在页面栈中已经存在同URL的页面,离栈顶最近的同URL的页面会被移动到栈顶,移动后的页面为新建页面,原来的页面依然保存在栈中,页面栈的数量不会改变。如果目标页面在页面栈中不存在同URL的页面,那么按照标准模式进行跳转,页面栈的数量会加1.
代码如下:
router.push({
url:'pages/fenghua'
params:{src:'Index页面传递过来的数据',}
},router.RouterMode.Single)
3.router.replace()
通过调用router.replace()方法,跳转到Ability内的指定页面。即使用新的页面替换当前页面,并销毁被替换的当前页面,页面栈数量依然不变。
代码如下:
router.replace({
url:'pages/fenghua'
params:{
src:'Index页面传递来的数据'
}
})
4.router.replace()加mode参数
router.replace()方法新增了mode参数,可以将mode参数配置为router.RouterMode.Single单实例模式和router.RouterModer,Standard标准模式。
在当实例模式下,如果目标页面在页面栈中已经存在同URL的页面,离栈顶最近的同RUL的页面会被移动到栈顶,替换当前页面,并销毁被替换的当前页面,移动后的页面为新建页面,页面栈的数量会减一。如果目标页面在页面页面栈中不存在同URL的页面,那么按照标准模式跳转,页面栈的数量不会改变。
代码如下:
router.replace({
url:'pages/fenghua',
params:{
src:'Index页面传递过来的数据',
}
},router.RouterModer.Single)
标签:URL,harmonyOS,mode,跳转,push,router,页面
From: https://blog.csdn.net/2401_87008233/article/details/145033743