当前位置: 首页 > news >正文

鸿蒙ArkUI路由跳转+注册登录完整实战博客

一、项目功能介绍

本项目基于鸿蒙原生ArkTS开发,全程使用基础组件+路由router+弹窗AlertDialog,无自定义陌生代码,实现完整流程:

1. 引导首页:点击切换注册/登录页面

2. 注册页面:两次密码不一致、内容为空 → 注册失败弹窗;密码一致 → 携带账号密码跳转主页

3. 登录页面:可跳转注册页,后续匹配注册账号密码完成校验

4. 个人主页:接收注册路由传参,展示登录用户名

5. 配置json路由路径,解决页面跳转404报错

业务规则:

✅ 注册:账号/密码/确认密码不能为空,两次密码必须相同,否则注册失败

✅ 路由:注册成功携带账号密码跳转主页

✅ 互通:注册页可跳登录、登录页可跳注册、首页可双向跳转

二、config.json路由页面配置(写完项目后添加并且同步文件)

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

三、代码一:引导首页 RouterDemo.ets

功能:入口页面,一键跳转注册、登录页面

import router from '@ohos.router'; @Entry @Component struct RouterDemo{ build(){ Column({space:20}){ //跳转到注册页面 Text('没有账号,立即注册') .fontSize(22) .fontColor(0x1677ff) .onClick(()=>{ router.pushUrl({ url:"pages/RouterRegister" }) }) //跳转到登陆页面 Text('已有账号,立即登录') .fontSize(22) .fontColor(0x1655dd) .onClick(()=>{ router.pushUrl({ url:"pages/RouterLogin" }) }) }.width('100%') .height('100%') .padding(12) } }

四、代码二:注册页面 RouterRegister.ets

核心功能:双向绑定账号密码、两次密码校验、空值校验、注册失败弹窗、注册成功路由传参跳转主页

import router from '@ohos.router'; import AlertDialog from '@ohos.promptAction'; @Entry @Component struct RouterRegister{ @State username:string = "" @State password:string = "" @State password2:string = "" build() { Column({space:25}){ Image($r('app.media.cover')) .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 }) } 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 }) } Text("已有账号,立即登录") .fontSize(22) .fontColor(0xababab) .onClick(()=>{ router.pushUrl({ url:"pages/RouterLogin" }) }) Button("立即注册") .width('100%') .height(50) .fontSize(24) .onClick(()=>{ //校验:账号密码不为空 + 两次密码一致 if ((this.username!="") && (this.password!="") && (this.password2!="") &&(this.password==this.password2)){ //注册成功:携带账号密码跳转主页 router.pushUrl({ url:"pages/HomePage", params:{ username:{ username:this.username, password:this.password } } }) } else { //注册失败弹窗 AlertDialog.show({ title:"注册失败", message:`注册的两次密码为空或者不一致,${this.username}`, confirm:{ value:"确定", action:()=>{} } }) } }) } .width('100%') .height('100%') .padding(15) } }

五、代码三:登录页面 RouterLogin.ets

功能:输入账号密码、跳转注册页面、后续匹配注册账号密码做登录校验,全程原生组件

import router from '@ohos.router'; @Entry @Component struct RouterLogin{ @State username:string = "" @State password:string = "" build() { Column({space:25}){ Image($r('app.media.cover')) .width(120) .height(120) .borderRadius(60) Text("登 录") .fontSize(32) .fontWeight(FontWeight.Bold) Row({space:15}){ Text("账 号") .fontSize(26) TextInput({text:this.username}) .width("70%") .height(50) .onChange((val:string)=>{ this.username = val }) } Row({space:15}){ Text("密 码") .fontSize(26) TextInput({text:this.password}) .width("70%") .height(50) .type(InputType.Password) .onChange((val:string)=>{ this.password = val }) } Text("没有账号,立即注册") .fontSize(22) .fontColor(0xababab) .onClick(()=>{ router.pushUrl({ url:"pages/RouterRegister" }) }) Button("立 即 登 录") .width('100%') .height(50) .fontSize(24) } .width('100%') .height('100%') .padding(15) } }

六、代码四:个人主页 HomePage.ets

功能:接收注册页路由传递的账号数据,页面加载渲染用户名

import router from '@ohos.router'; @Entry @Component struct HomePage{ @State username:string = "" //页面加载获取路由传参 onPageShow(): void { const params = router.getParams() as Record<string,any> if (params){ this.username = params.username.username } } build() { Column(){ Text(`你好 ${this.username}`) .fontSize(45) } .width('100%') .height('100%') .justifyContent(FlexAlign.Center) } }

七、项目完整流程总结

1. 启动进入RouterDemo首页,自由选择注册/登录

2. 注册页填写信息:

❌ 空内容 / 两次密码不同 → 弹窗提示注册失败

✅ 信息完整+密码一致 → 携带账号密码跳转Home主页

3. 注册页可一键跳转登录页,登录页可一键跳转注册页,页面互通

4. 主页接收路由参数,展示当前登录用户名

八、用到知识点总结(考试作业考点)

1. 布局组件:Column垂直布局、Row水平布局

2. 路由api:router.pushUrl页面跳转、router.getParams路由传参

3. 状态管理:@State双向数据绑定

4. 弹窗组件:AlertDialog全局弹窗提示

5. 表单组件:TextInput输入框、密码框type加密模式

6. 逻辑判断:if判断完成注册校验、非空判断

http://www.jsqmd.com/news/1076123/

相关文章:

  • 抖音自动化发布工具:让视频创作回归本质,发布交给AI
  • 【招聘】第八篇:刚好够乱:为什么招聘做得好的公司,永远活在混沌的边缘
  • 4G 报警器和传统有线报警器比,哪个更靠谱?
  • Alienware硬件控制:基于原生ACPI通信的灯光与散热系统优化方案
  • 制造业单项冠军企业认定条件与流程详解
  • Token经济视角:极简DSL如何解决AI富UI渲染的算力
  • 查重反复红?这几款 AI 改写网站一键降重,改写后重复率直接达标
  • 玩疯啦!Java 人机猜数字游戏,编程小白也能秒变高手
  • 终极双屏PDF演示工具Pympress:免费开源的专业演讲助手完全指南
  • 赛博朋克2077存档编辑器:掌控夜之城的终极工具
  • 强化学习工业落地五篇核心论文实战指南
  • 半导体企业如何构建业务连续性管理体系:从ISO 22301到NXP实践
  • NSK滚珠丝杠W3214SA-3P-C5Z6技术详解
  • 占地1.5个曼哈顿的超级项目:光伏+储能为数据中心供电,能否成全球范式?
  • AI深伪证据如何冲击司法信任?法律人防伪实战指南
  • SSM 框架实战教程 SpringBoot 自定义 starter 200
  • 树莓派3分辨率设置深度指南:从config.txt到EDID调试
  • 强化学习环境设计实战:从Gym到电商推荐的可落地RL工程指南
  • 树形控件:文件系统风格的Tree组件实现(79)
  • 零壹教育:数据挖掘的隐性偏见
  • Grafana路径遍历漏洞CVE-2021-43798实战复现与深度利用指南
  • Space Thumbnails:智能3D模型文件预览工具在Windows资源管理器中的一站式解决方案
  • 量化交易数据获取的终极解决方案:用efinance一站式获取股票、基金、债券、期货数据
  • AI 对话的“文字墙“,终于有人要拆掉它了
  • LMXCMS 1.4 SQL注入漏洞实战审计:从原理到修复
  • 千问开源首个原生语言世界模型 Qwen-AgentWorld,性能超越 GPT-5.4 等前沿模型
  • 3分钟掌握IDM激活脚本:永久解锁下载加速神器
  • Gemma 4 E2B/E4B端侧AI部署实战:离线、确定性与隐私可控的硬核指南
  • Ryujinx深度解析:C构建的Nintendo Switch模拟器实战指南
  • DonkeyCar控制器硬件接入全指南:RC接收器接线与PPM校准实战