页面之间的导航可以通过页面路由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)

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐