0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发接口UI界面:【@ohos.router (页面路由)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-05-28 16:26 次阅读

页面路由

icon-note.gif说明
开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

  • 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
  • 页面路由需要在页面渲染完成之后才能调用,在onInit和onReady生命周期中页面还处于渲染阶段,禁止调用页面路由方法。

导入模块

import router from '@ohos.router'

权限列表

router.push

push(options: RouterOptions): void

跳转到应用内的指定页面。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数

参数名类型必填说明
options[RouterOptions]跳转页面描述信息

示例:

// 在当前页面中
export default {
  pushPage() {
    router.push({
      url: 'pages/routerpage2/routerpage2',
      params: {
	data1: 'message',
        data2: {
          data3: [123, 456, 789]
	},
      },
    });
  }
}
// 在routerpage2页面中
export default {
  data: {
    data1: 'default',
    data2: {
      data3: [1, 2, 3]
    }
  },
  onInit() {
    console.info('showData1:' + this.data1);
    console.info('showData3:' + this.data2.data3);
  }
}

router.replace

replace(options: RouterOptions): void

用应用内的某个页面替换当前页面,并销毁被替换的页面。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
options[RouterOptions]替换页面描述信息。

示例:

// 在当前页面中
export default {
  replacePage() {
    router.replace({
      url: 'pages/detail/detail',
      params: {
        data1: 'message',
      },
    });
  }
}
// 在detail页面中
export default {
  data: {
    data1: 'default'
  },
  onInit() {
    console.info('showData1:' + this.data1)
  }
}

router.back

back(options?: RouterOptions ): void

返回上一页面或指定的页面。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
options[RouterOptions]返回页面描述信息,其中参数url指路由跳转时会返回到指定url的界面,如果页面栈上没有url页面,则不响应该情况。如果url未设置,则返回上一页。

示例:

// index页面
export default {    
  indexPushPage() {        
    router.push({            
      url: 'pages/detail/detail',        
    });        
  }
}
// detail页面
export default {    
  detailPushPage() {        
    router.push({            
      url: 'pages/mall/mall',        
    });    
  }
}
// mall页面通过back,将返回detail页面
export default {    
  mallBackPage() {        
    router.back();    
  }
}
// detail页面通过back,将返回index页面
export default {    
  defaultBack() {        
    router.back();    
  }
}
// 通过back,返回到detail页面
export default {    
  backToDetail() {        
    router.back({uri:'pages/detail/detail'});    
  }
}

router.clear

clear(): void

清空页面栈中的所有历史页面,仅保留当前页面作为栈顶页面。

系统能力: SystemCapability.ArkUI.ArkUI.Full

示例:

export default {    
  clearPage() {        
    router.clear();    
  }
}js

router.getLength

getLength(): string

获取当前在页面栈内的页面数量。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型说明
string页面数量,页面栈支持最大数值是32。

示例:

export default {     
  getLength() {        
    var size = router.getLength();        
    console.log('pages stack size = ' + size);    
  }
}

router.getState

getState(): RouterState

获取当前页面的状态信息。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型说明
[RouterState]页面状态信息。

RouterState

页面状态信息。

系统能力: 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full。

名称类型说明
indexnumber表示当前页面在页面栈中的索引。 > ![icon-note.gif]说明:> 从栈底到栈顶,index从1开始递增。
namestring表示当前页面的名称,即对应文件名。
pathstring表示当前页面的路径。

示例:

export default {     
  getState() {        
    var page = router.getState();
    console.log('current index = ' + page.index);
    console.log('current name = ' + page.name);
    console.log('current path = ' + page.path);
  }
}

router.enableAlertBeforeBackPage

enableAlertBeforeBackPage(options: EnableAlertOptions): void

开启页面返回询问对话框。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
options[EnableAlertOptions]文本弹窗信息描述。

示例:

export default {    
  enableAlertBeforeBackPage() {        
    router.enableAlertBeforeBackPage({            
      message: 'Message Info',            
      success: function() {                
        console.log('success');            
      },            
      fail: function() {                
        console.log('fail');            
      },        
    });    
  }
}

EnableAlertOptions

页面返回询问对话框选项。

系统能力: 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full。

名称类型必填说明
messagestring询问对话框内容。

router.disableAlertBeforeBackPage

disableAlertBeforeBackPage(): void

禁用页面返回询问对话框。

系统能力: SystemCapability.ArkUI.ArkUI.Full

示例:

export default {    
  disableAlertBeforeBackPage() {        
    router.disableAlertBeforeBackPage();    
  }
}

router.getParams

getParams(): Object

获取发起跳转的页面往当前页传入的参数。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型说明
Object发起跳转的页面往当前页传入的参数。

示例:

  • 类Web范示例

    // 在当前页面中
    export default {
      pushPage() {
        router.push({
          url: 'pages/detail/detail',
          params: {
            data1: 'message',
          },
        });
      }
    }
    
    // 在detail页面中
    export default {
      onInit() {
        console.info('showData1:' + router.getParams().data1);
      }
    }
    
  • 声明式示例

    //通过router.push跳转至目标页携带params参数
    import router from '@ohos.router'
    
    @Entry
    @Component
    struct Index {
      async  routePage() {
        let options = {
          url: 'pages/second',
          params: {
            text: '这是第一页的值',
            data: {
              array: [12, 45, 78]
            },
          }
        }
        try {
          await router.push(options)
        } catch (err) {
          console.info(` fail callback, code: ${err.code}, msg: ${err.msg}`)
        }
      }
    
      build() {
        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
            Text('这是第一页')
              .fontSize(50)
              .fontWeight(FontWeight.Bold)
          Button() {
            Text('next page')
              .fontSize(25)
              .fontWeight(FontWeight.Bold)
          }.type(ButtonType.Capsule)
              .margin({ top: 20 })
              .backgroundColor('#ccc')
              .onClick(() = > {
                this.routePage()
          })
        }
        .width('100%')
        .height('100%')
      }
    }
    
//在second页面中接收传递过来的参数
    import router from '@ohos.router'

    @Entry
    @Component
    struct Second {
      private content: string = "这是第二页"
      @State text: string = router.getParams()['text']
      @State data: any = router.getParams()['data']
      @State secondData : string = ''
      
      build() {
        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
          Text(`${this.content}`)
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
          Text(this.text)
            .fontSize(30)
            .onClick(()= >{
              this.secondData = (this.data.array[1]).toString()
            })
          .margin({top:20})
          Text('第一页传来的数值' + '  ' + this.secondData)
            .fontSize(20)
            .margin({top:20})
            .backgroundColor('red')      
        }
        .width('100%')
        .height('100%')
      }
    }
    
    `HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿`

搜狗高速浏览器截图20240326151344.png

RouterOptions

路由跳转选项。

系统能力: 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Lite。

名称类型必填说明
urlstring表示目标页面的uri,可以用以下两种格式: - 页面绝对路径,由配置文件中pages列表提供,例如: - pages/index/index - pages/detail/detail - 特殊值,如果uri的值是"/",则跳转到首页。
paramsObject跳转时要同时传递到目标页面的数据,跳转到目标页面后,参数可以在页面中直接使用,如this.data1(data1为跳转时params参数中的key值)。如果目标页面中已有该字段,则其值会被传入的字段值覆盖。

icon-note.gif说明: 页面路由栈支持的最大Page数量为32。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8577

    浏览量

    151023
  • 鸿蒙
    +关注

    关注

    57

    文章

    2342

    浏览量

    42818
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发接口UI界面:【@ohos.prompt (弹窗)】

    本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
    的头像 发表于 05-28 09:35 1166次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>接口</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b>:【@<b class='flag-5'>ohos</b>.prompt (弹窗)】

    鸿蒙开发-应用程序框架UIAbility的使用

    使用不同的url访问不同的页面,包括跳转到UIAbility内的指定页面、用UIAbility内的某个页面替换当前页面、返回上一页面或指定的
    发表于 01-17 16:36

    纯血鸿蒙开发教程-运行时动态加载页面提升性能

    } from \'./pageTwo\'; ... import router from \'@ohos.router\'; 2.主页通过Navigation组件实现点击Button跳转到不同的子页面
    发表于 05-10 20:52

    鸿蒙应用开发踩坑记之路由跳转

    帮我催催官方吧。这两天Mac OS发布了最新的版本,鸿蒙开发工具也发布了mac版本,这两件事稍许冲淡了我在鸿蒙应用开发中遇到的不快。今天就来继续做一下
    发表于 11-18 16:54

    鸿蒙应用开发踩坑记之路由跳转

    本来打算先搞地图方面的开发,但是遇到一些,已经在官方论坛发帖求助了:关于JS UI开发的一些问题大家如果对鸿蒙应用开发有兴趣,也去帮我催催官
    发表于 11-21 18:21

    鸿蒙开发AI应用(六)UI

    在“富鸿蒙”的设备上开发就会比较方便。资料下载本期相关文件资料,可在公众号“深度觉醒”,后台回复:“ohos06”,获取下载链接。下一篇预告本期主要介绍了一下JS框架下的界面
    发表于 01-07 01:16

    HarmonyOS应用开发-ArkUI声明式UI页面布局、跳转与返回的实现

    RouterAPI接口,通过在页面上引入router,可以调用router的各种接口,从而实现页面
    发表于 12-09 11:42

    鸿蒙开源第三方组件资料合集

    展示1、测试界面。 如图1所示,这是一个为了测试Timber_ohos功能而简单构建的UI页面。点击“测试”按钮即可输出相应的log。2、鸿蒙
    发表于 03-23 09:53

    【润和软件DAYU200开发板体验】从头创建eTs项目

    in the build phase.*/build() {}}9、实现页面间的跳转页面间的导航可以通过页面路由ro
    发表于 10-16 15:24

    HarmonyOS 管理页面跳转及浏览记录导航

    。 // index.ets import web_webview from \'@ohos.web.webview\'; import router from \'@ohos.router\'; @Entry
    发表于 09-19 18:31

    鸿蒙原生应用开发-关于页面接口router返回问题与解决思路

    一、模块导入 import router from \'@ohos.router\' 提供通过不同的url访问不同的页面,包括跳转到应用内的指定页面、用应用内的某个
    发表于 11-15 10:11

    鸿蒙版微信聊天UI效果实现!

      最近开发中要做一个类似微信聊天的工单系统客服中心界面(安卓版)所以想着也模仿一个鸿蒙版(基于 Java UI 的,JS UI 版本的后期
    的头像 发表于 11-15 09:35 3615次阅读
    <b class='flag-5'>鸿蒙</b>版微信聊天<b class='flag-5'>UI</b>效果实现!

    鸿蒙页面示例

    @Entry标签,被该标签修饰后页面才会有生命周期 import router from '@ohos.router'@Entry@Componentstruct Login { @State title
    的头像 发表于 02-01 11:24 456次阅读

    鸿蒙OS开发实例:【工具类封装-页面路由

    import common from '@ohos.app.ability.common'; import router from '@ohos.router'封装app内的
    的头像 发表于 03-28 16:16 910次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>实例:【工具类封装-<b class='flag-5'>页面</b><b class='flag-5'>路由</b>】

    鸿蒙开发接口UI界面:【@ohos.animator (动画)】

    本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
    的头像 发表于 05-27 16:46 569次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>接口</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b>:【@<b class='flag-5'>ohos</b>.animator (动画)】