HarmonyOS Next快速入门:页面路由

举报
鸿蒙开发工程师 发表于 2025/06/23 14:26:25 2025/06/23
【摘要】 ##HarmonyOS Next快速入门##HarmonyOS应用开发##教育## 基本概念页面路由指在应用程序中实现不同页面之间的跳转和数据传递。Router模块通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。本文将从页面跳转、页面返回、页面返回前增加一个询问框和命名路由这几个方面,介绍如何通过Router模块实现页面路由。页面跳转是开发过程中的一个重要组成部分。在使用...

##HarmonyOS Next快速入门##HarmonyOS应用开发##教育##

基本概念

页面路由指在应用程序中实现不同页面之间的跳转和数据传递。Router模块通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。本文将从页面跳转、页面返回、页面返回前增加一个询问框和命名路由这几个方面,介绍如何通过Router模块实现页面路由。

页面跳转是开发过程中的一个重要组成部分。在使用应用程序时,通常需要在不同的页面之间跳转,有时还需要将数据从一个页面传递到另一个页面。

开发指南

在创建项目时:

  1. 在src/main/ets/entryability目录下,会生成EntryAbility.ts
  2. 在src/main/ets/pages目录下,会生成一个Index页面。
  3. 在EntryAbility的onWindowStageCreate方法中指定了应用的入口页面。

那么,入口页面如何跳转到其他页面呢?
HarmonyOS提供了Router模块,通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。

导入@ohos.router (页面路由)

import { router } from '@kit.ArkUI';

常见用法
API和说明

router.pushUrl(options: RouterOptions) //跳转到指定页面
router.replaceUrl(options: RouterOptions)	//替换当前页面
router.back(options?: RouterOptions)	//返回上一页面或指定的页面
router.clear()	//清空所有历史页面,仅保留当前页面记录。

实例演示

首页→登录→个人中心
home

import {router} from '@kit.ArkUI'

@Entry
@Component
struct Index {
  @State message: string = '首页';
  @State isLogin:boolean=true;

  build() {
    RelativeContainer() {
      Button("个人中心").onClick(()=>{
        if(this.isLogin){
          router.pushUrl({url:'pages/Person'})
        }else{
          router.pushUrl({url:'pages/Login'})
        }
      })

      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }
}

login

import { router } from '@kit.ArkUI';

@Entry
@Component
struct Login {
  @State message: string = '登录/注册';

  build() {
    Column({space:10}) {
      Row(){
        Button("返回").onClick(()=>{
          router.back()
        }).backgroundColor("#CCCCCC")
      }.width("100%")

      Text(this.message)
        .id('LoginHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)

      TextInput({placeholder:"请输入用户名/手机号"})
      TextInput({placeholder:"请输入密码"}).type(InputType.Password)

      Button("提交").onClick(()=>{
        // router.pushUrl({url:"pages/Person"});// 首页 - 登录页 - 个人中心页 - 返回:首页
        router.replaceUrl({url:"pages/Person"});// 首页 -(登录页:替换成个人中心页)-返回:首页
      })
    }
    .height('100%')
    .width('100%')
  }
}

person

import { router } from '@kit.ArkUI';

@Entry
@Component
struct Person {
  @State message: string = '个人中心';

  build() {
    Column() {
      Button("返回").onClick(()=>{
        router.back()
      }).backgroundColor("#CCCCCC")

      Text(this.message)
        .id('PersonHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)

      Button("清空页面历史记录").onClick(()=>{
        router.clear()
      })
    }
    .height('100%')
    .width('100%')
  }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。