页面跳转(页面路由)
1.跳转到应用内的指定页面
pushUrl 是直接指定页面跳转可以返回上一级页面,若是来回切换页面,页面栈会长度会一直增加知道页面栈长度超过32,应用可能会崩溃。
//ArkTS
Text('第一个页面')
.onclick(
() => {
router.pushUrl({
url: 'pages/routerpage2', //页面地址需要有Entry入口且在main.json5中有页面路径存在才能实现跳转
params: {id : 1}//跳转是想要给到下一个页面的参数
}
})
router.getparams()接收路由传递的参数
注意:路由传递参数 是要传递一个对象,且接收参数的时候也要是对象,在接收页面设置一个包含传递参数的对象类型
当要传递对象时写为:params : object
当传递简单类型数据时写为:params : {id : number}
且接收参数时 传什么就接什么不可写错
interface RouterParam{
id:number
}
//第二个页面接收参数
interface RouterParam{
id : number }
@Entry
@Component
struct Index{
//在组件被创建的时候获取路由参数
aboutToAppear:void{
const res = router.getParams() as RouterParam
AlertDialog.show({message : res.id.tostring()})//通过弹窗看一下是否拿到数据
}
build {
Text('第二个页面')
}
}
2.应用内的某个页面替换当前页面,并销毁被替换的页面。
replaceUrl是替换当前页面不能返回上一级页面,页面栈页面不会重复增加
router.replaceUrl({url: 'pages/detail',params: new routerParams('message')}