鸿蒙 HarmonyOS Next 路由 不废话 全干货

一、页面的创建

(1)直接通过创建一个新的Page的方式创建

(2)先创建一个 ArkTs File文件,然后在resources/base/profile/main_pages.json中加上页面对应的src路径,下面的Index_3.ets文件是通过创建ArkTs File文件生成的,需要加上src路径

加上路径后的显示:

二、路由 - 操作

首先导入:

复制代码
import router from 'ohos.router'

普通跳转(可以返回)

相当于栈,可以每次跳转都是入栈,每次返回都是出栈,页面栈的最大容量是32个页面

提示:页面地址是resources/base/profile/main_pages.json里的src地址

复制代码
router.pushUrl({
        url:'页面地址'
})

替换跳转(无法返回)

提示:页面地址是resources/base/profile/main_pages.json里的src地址

复制代码
router.replaceUrl({
        url:'页面地址'
})

返回

复制代码
router.back()

获取页面栈的长度

复制代码
router.getLength()

清空页面栈

复制代码
router.clear()

三、路由模式

两种路由模式:

Standard:无论之前是否使用过,一直添加到页面栈中(默认)

Single:如果目标页面已存在,会将已有的最近同url页面移到栈顶

路由模式的设置方式

在挑战页面的第二个参数设置路由模式

router.pushUrl(options,mode)

示例:

复制代码
router.pushUrl({
  url:'pages/Index_2'
},router.RouterMode.Single)

四、路由传参

传递参数的示例:

复制代码
router.pushUrl({
  url:'pages/Index_3',
  params: {
    username:this.username
  }
})

接受参数的示例:

复制代码
aboutToAppear():void{

  console.log(JSON.stringify(router.getParams()))
  const params = router.getParams() as 类型

  //例如,获取params中的username属性
  console.log('我的用户名是'+params.username)

}

五、demo演示

第一个页面:Index.ets (效果:跳转的到Index_2.ets页面)

复制代码
import router from '@ohos.router'

@Entry
@Component
struct Index {

  build(){
    Column() {
      Text('第一个页面')
        .fontSize(50)
        .onClick(()=>{
          router.pushUrl({
            url:'pages/Index_2'
          },router.RouterMode.Single)
        })

    }
  }
}

第二个页面:Index_2.ets(效果:跳转的到Index_3.ets页面,同时传递参数username)

复制代码
import router from '@ohos.router';

@Entry
@Component
struct Index_2 {
  @State username:string = 'csh'
  build(){
    Column() {
      Text('第二个页面')
        .fontSize(50)
        .onClick(()=>{
          router.pushUrl({
            url:'pages/Index_3',
            params: {
              username:this.username
            }
          })
        })
    }
  }
}

第三页面:Index_3.ets(效果:接收Index_2.ets页面传递来的参数并通过日志输出)

复制代码
import router from '@ohos.router';

interface ParamsObj{
  username:string
}

@Entry
@Component
struct Index_3 {

  aboutToAppear():void{

    console.log(JSON.stringify(router.getParams()))
    const params = router.getParams() as ParamsObj
    console.log('我的用户名是'+params.username)

  }

  build(){
    Column() {
      Text('第三个页面')
        .fontSize(50)

    }
  }
}
相关推荐
橙露10 分钟前
Python 对接 API:自动化拉取、清洗、入库一站式教程
开发语言·python·自动化
Omigeq16 分钟前
1.4 - 曲线生成轨迹优化算法(以BSpline和ReedsShepp为例) - Python运动规划库教程(Python Motion Planning)
开发语言·人工智能·python·算法·机器人
2301_8084143817 分钟前
自动化测试的实施
开发语言·python
见山是山-见水是水25 分钟前
鸿蒙flutter第三方库适配 - 文件加密工具
flutter·华为·harmonyos
波波00735 分钟前
写出稳定C#系统的关键:不可变性思想解析
开发语言·c#·wpf
dr_yingli1 小时前
fMRI(3-1)报告(个体化报告)生成器说明
开发语言·matlab
hrhcode1 小时前
【java工程师快速上手go】一.Go语言基础
java·开发语言·golang
key_3_feng1 小时前
HarmonyOS 6.0 健康食谱应用开发方案
华为·harmonyos
飞Link1 小时前
【AI大模型实战】万字长文肝透大语言模型(LLM):从底层原理解析到企业级Python项目落地
开发语言·人工智能·python·语言模型·自然语言处理
麒麟ZHAO1 小时前
鸿蒙flutter第三方库适配 - 文件对比工具
数据库·redis·flutter·华为·harmonyos