HarmonyOS NEXT - 页面路由

简介: 在HarmonyOS应用开发中,项目创建时会自动生成入口文件`EntryAbility.ts`和首页`Index`。通过`@ohos.router`模块,可实现页面间的灵活跳转。常用方法包括:`pushUrl`(跳转新页面)、`replaceUrl`(替换当前页面)、`back`(返回上一页)和`clear`(清空历史记录)。示例演示了从首页到登录页再到个人中心页的跳转逻辑,结合条件判断与路由方法,展示了实际应用场景下的页面导航功能。

在创建项目时:
在src/main/ets/entryability目录下,会生成EntryAbility.ts
在src/main/ets/pages目录下,会生成一个Index页面。

在EntryAbility的onWindowStageCreate方法中指定了应用的入口页面

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

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

import { router } from '@kit.ArkUI';
AI 代码解读

常见用法
API 说明

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

实例演示
首页→登录→个人中心
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%')
  }
}
AI 代码解读

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%')
  }
}
AI 代码解读

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%')
  }
}
AI 代码解读
蓝鹰
+关注
目录
打赏
0
10
10
0
124
分享
相关文章
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
135 92
|
1天前
HarmonyOS NEXT - @Prop和@Link
本示例介绍了`@Prop`和`@Link`装饰器在父子组件间的数据同步机制。`@Prop`实现单向数据绑定,子组件可修改本地值,但不会同步回父组件;父组件数据更新时会覆盖子组件的本地更改。`@Link`实现双向绑定,子组件与父组件数据共享且相互影响。 **限制条件:** - `@Prop`变量深拷贝时可能丢失复杂类型。 - `@Link`不可用于`@Entry`组件,禁止本地初始化,类型需与数据源一致。 **支持类型:** - `@Prop`支持基础类型、对象、数组、`Date`及联合类型,不支持`any`。 - 数据源与`@Prop`类型需匹配,包括简单类型、数组项及对象属性。
56 41
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
28 14
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
HarmonyOS NEXT - RelationalStore关系型数据库
关系型数据库对应用提供通用的操作接口,底层使用SQLite作为持久化存储引擎,支持SQLite具有的数据库特性,包括但不限于事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句。
54 27
|
1天前
|
HarmonyOS NEXT - @Provide和@Consume
@Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,@Provide和@Consume摆脱参数传递机制的束缚,实现跨层级传递。
54 21
HarmonyOS NEXT - Preferences用户首选项
- 用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。 - Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据。Preferences会随着存放的数据量越多而导致应用占用的内存越大,因此,Preferences不适合存放过多的数据。
56 19
|
1天前
HarmonyOS NEXT - @State状态变量
ArkUI 是一种声明式 UI 框架,通过状态驱动 UI 更新。@State 装饰的变量用于管理组件内部状态,具有以下特点:私有性(仅组件内访问)、必须初始化、生命周期与组件一致。它支持单向(与 @Prop)和双向(与 @Link、@ObjectLink)数据同步。状态改变时,绑定的 UI 会自动刷新。注意:@State 不支持 Function 类型,不能在 build 中修改状态变量。代码示例中展示了通过 @State 管理按钮点击计数的状态更新机制。
53 16
|
1天前
|
HarmonyOS NEXT - @CustomDialog自定义弹窗
CustomDialog 是一个用于实现自定义弹窗的工具,适用于广告、中奖提示、警告信息、软件更新等用户交互场景。通过 `CustomDialogController` 类可控制弹窗的显示与隐藏。开发者可配置多种选项,如对齐方式、偏移量、蒙层颜色、动画效果等,支持模态与非模态窗口,并可通过装饰器 `@CustomDialog` 定义弹窗界面。示例代码展示了如何创建欢迎弹窗及响应用户操作,灵活满足不同需求。
56 13
【HarmonyOS 专题】02 搭建简单登录页面
0 基础学习 HarmonyOS,通过 xml 方式简单搭建一个基本登录页面!
354 0
【HarmonyOS 专题】02 搭建简单登录页面
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
39 23
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等