news 2026/7/2 20:20:56

页面跳转

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
页面跳转

(一)页面注册

import router from '@ohos.router'; @Entry @Component struct RouterLogin{ @State username:string="" @State password:string="" build() { Column({space:25}){ Image($r('app.media.7788')).width(120).height(120).borderRadius(60) Text("登 录") .fontSize(32).fontWeight(FontWeight.Bolder) Row(){ Text("账号").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.username}).width('60%').height(50) .onChange((value:string)=>{ this.username = value}) } Row(){ Text("密码").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.password}).width('60%').height(50).type(InputType.Password) .onChange((value:string)=>{ this.password = value}) } Text("没有账号,立即注册").fontSize(22).fontColor(0xababab) .onClick(()=>{ router.pushUrl({ url:"pages/RouterRegister" }) } ) Button("立 即 登 录").width('100%').height(50).fontSize(24) .onClick(()=>{ if ((this.username !== "") && (this.password !== "")) { router.pushUrl({ url: "pages/HomePage", params: { username: this.username, password: this.password } }) } else { AlertDialog.show({ title: "登录失败", message: "用户名或密码不能为空" })} }) } .width('100%').height('100%').padding(15) } }

1. 头部导入与页面基础声明

import router from '@ohos.router'; @Entry @Component struct RouterRegister{

import router from '@ohos.router':导入鸿蒙路由模块,用于页面之间跳转、传递参数。

@Entry:标识这是独立页面入口。

@Component:自定义组件装饰器,声明下面的RouterRegister是页面组件。

struct RouterRegister:页面结构体。

2.响应式状态变量

@State username:string="" @State password:string="" @State password2:string=""

username:存储账号输入框内容

password:存储密码输入框内容

password2:存储确认密码输入框内容

3.build () 函数:页面 UI 布局,整体垂直布局column,中间穿插水平布局row

3.1 顶部头像 + 标题

Column({space:25}){ Image($r('app.media.7788')).width(120).height(120).borderRadius(60) Text("注 册").fontSize(32).fontWeight(FontWeight.Bolder)

1.添加图片作为头像,设置宽120,高120,弧度60的圆形。

2.输入文本标题“注册”,字号32,字体加粗

3.2账号输入行(Row 横向布局)

Row(){ Text("账号").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.username}).width('60%').height(50) .onChange((value:string)=>{ this.username = value}) }

1.输入文本‘’账号“,左边文字占 40% 宽度,输入框占 60%。

2.TextInput:输入框,默认显示绑定的username变量。

3..onChange():输入内容变化时触发,把输入值同步给username,实现双向绑定

3.3密码输入行

Row(){ Text("密码").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.password}).width('60%').height(50).type(InputType.Password) .onChange((value:string)=>{ this.password = value}) } Row(){ Text("确认密码").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.password2}).width('60%').height(50).type(InputType.Password) .onChange((value:string)=>{ this.password2 = value }) }

1.type(InputType.Password):输入框隐藏明文,显示密码圆点。逻辑和账号输入框一致,绑定password

2.绑定password2,用于二次输入密码校验

3.4跳转登录文字

Text("已有账号,立即登录") .fontSize(22) .fontColor(0xababab) .onClick(()=>{ router.pushUrl({ url:"pages/RouterLogin" }) })

1..onClick():点击事件

2.router.pushUrl():路由跳转 API,打开新页面,跳转到登录页RouterLogin

3.5注册按钮核心逻辑

Button("立即注册") .width('100%').height(50).fontSize(24).onClick(()=>{ if ((this.username !== "") && (this.password !== "")) { router.pushUrl({ url: "pages/HomePage", params: { username: this.username, password: this.password } }) } else { AlertDialog.show({ title: "注册失败", message: "用户名或密码不能为空" }) } })

表单校验:判断账号、密码是否为空,确认输入内容。

成功分支router.pushUrl

跳转到首页HomePageparams:路由传参,把用户输入的账号、密码传递给首页页面接收使用。

失败分支AlertDialog.show():弹出系统提示弹窗,提示注册失败原因

3.6外层布局

.width('100%').height('100%').padding(15)

四周预留 15px 内边距

(二)页面登录

import router from '@ohos.router'; @Entry @Component struct RouterLogin{ @State username:string="" @State password:string="" build() { Column({space:25}){ Image($r('app.media.7788')).width(120).height(120).borderRadius(60) Text("登 录") .fontSize(32).fontWeight(FontWeight.Bolder) Row(){ Text("账号").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.username}).width('60%').height(50) .onChange((value:string)=>{ this.username = value}) } Row(){ Text("密码").fontSize(26).width('40%').textAlign(TextAlign.Center) TextInput({text:this.password}).width('60%').height(50).type(InputType.Password) .onChange((value:string)=>{ this.password = value}) } Text("没有账号,立即注册").fontSize(22).fontColor(0xababab) .onClick(()=>{ router.pushUrl({ url:"pages/RouterRegister" }) } ) Button("立 即 登 录").width('100%').height(50).fontSize(24) .onClick(()=>{ if ((this.username !== "") && (this.password !== "")) { router.pushUrl({ url: "pages/HomePage", params: { username: this.username, password: this.password } }) } else { AlertDialog.show({ title: "登录失败", message: "用户名或密码不能为空" })} }) } .width('100%').height('100%').padding(15) } }

解释同上。

(三)跳转页面

{ "src": [ "pages/Index", "pages/second", "pages/RouterRegister", "pages/RouterLogin" ] }

main_pages.json配置增加注册页和登录页运行

点击已有账号立即登录和没有账号,立即注册实现跳转!!!!!!!

(四)页面接收路由传参

A 页面传参跳转 → B 页面接收参数

import router from '@ohos.router'; @Entry @Component struct HomePage { @State username:string = "" onPageShow(): void { const params = router.getParams() as Record<string,string> if (params.username) { this.username = params.username } } build() { Column() { Text(`你好 ${this.username}`) } } }

1.头部导入

import router from '@ohos.router';

导入系统路由模块router,用于获取上一页传递过来的参数、页面跳转。

2.页面组件声明

@Entry @Component struct HomePage { @State username:string = "" }

@State username:string = ""

响应式变量,用来接收上一页传来的用户名;

初始为空字符串,拿到参数后自动刷新页面文字。

3.页面生命周期函数 onPageShow

onPageShow(): void { const params = router.getParams() as Record<string,string> if (params.username) { this.username = params.username } }

onPageShow()页面生命周期

触发时机:页面每次显示时执行

router.getParams()

作用:获取跳转当前页面时,上一页通过pushUrl传递的参数;

返回值默认是Object | nullas Record<string,string>是类型断言,告诉 TS 这是{键:字符串值}格式对象,方便直接点取params.username

4.build 渲染布局

build() { Column() { Text(`你好 ${this.username}`) } }

垂直布局Column,内部文本使用模板字符串拼接用户名

onPageShowusername赋值后,@State触发 UI 自动更新,文字实时变化。

`你好 ${this.username}`模板字符串

`反引号包裹文本,支持${变量名}嵌入变量;

${this.username}会读取页面@State修饰的响应式变量username的值,拼接进文字。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 20:16:50

Anthropic 新推中端模型:能力媲美 Opus 4.8,安全任务执行能力更优

Anthropic 新中端模型&#xff1a;Sonnet 4.6 继任者的新突破Anthropic 新推出的中端模型是 Sonnet 4.6 的继任者。据该公司新闻稿介绍&#xff0c;这款新模型具备强大的能力&#xff0c;能够制定计划、使用浏览器和终端等工具&#xff0c;还能自主运行&#xff0c;而这些能力在…

作者头像 李华
网站建设 2026/7/2 20:16:32

2026年干细胞技术如何革新健康管理

2026年医疗行业干细胞技术及健康管理趋势近年来&#xff0c;干细胞技术在医疗领域展现出巨大潜力&#xff0c;特别是在健康管理方面。随着人们对健康管理和疾病预防意识的增强&#xff0c;干细胞技术逐渐成为公众关注的焦点。本文旨在为读者梳理干细胞技术在健康管理中的应用现…

作者头像 李华
网站建设 2026/7/2 20:15:40

洁净室设计与ESD管理:看不见的守护者

一、问题背景&#xff1a;洁净室的隐形战场在半导体晶圆厂里&#xff0c;有一个看不见的战场&#xff0c;每时每刻都在进行着无声的战斗。这个战场就是洁净室&#xff0c;而敌人是肉眼看不见的微粒和静电。我在晶圆厂工作这些年&#xff0c;见过太多因为洁净室问题导致的生产事…

作者头像 李华
网站建设 2026/7/2 20:15:22

8051内部结构

这是STC 增强型高速 8051 内核完整硬件框图&#xff08;STC8/STC32 系列&#xff0c;80MHz 主频那款&#xff09;&#xff0c;我继续沿用你熟悉的「公司老板 CPU」比喻&#xff0c;分层拆解&#xff0c;和你之前学的基础 8051 对应起来&#xff0c;区分新增升级部件。一、先划分…

作者头像 李华
网站建设 2026/7/2 20:12:12

word 2021页眉页脚、更新目录、文件打印

一、分隔符 菜单栏–布局–分隔符–下一页– 多出来的空白页–CtrlDelete– 二、页眉页脚编辑 1.双击word页面&#xff0c;页眉页脚的地方&#xff0c;进入页眉页脚编辑模式 2.插入–页码–页码格式–页码编号–起始页码–1–确定– 3.插入–页码–页面底端–普通数字– 4.将目…

作者头像 李华
网站建设 2026/7/2 20:11:22

法院将听审苹果案:下级法院判其“故意”违反2021年支付禁令

苹果面临支付禁令违规听审据彭博社报道&#xff0c;法院即将听取苹果公司针对下级法院一项判决的相关辩论。这一事件引发了科技行业的广泛关注。下级法院认定苹果“故意”违规该下级法院的判决维持了另一裁定&#xff0c;明确指出苹果“故意”违反了2021年的一项禁令。这项禁令…

作者头像 李华