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

【鸿蒙ArkTS】极简登录注册页面+页面跳转+密码校验

一、项目简介

本期基于HarmonyOS ArkTS实现最常用的登录页 + 注册页功能:

  • 登录、注册双页面路由跳转
  • 注册页密码一致性校验、非空校验
  • 输入框双向数据绑定
  • 错误弹窗提示(注册失败)
  • 登录成功跳转首页
  • 完整 UI 布局(头像、输入框、按钮、文字跳转)

适合鸿蒙初学者练手,页面干净、代码注释详细、可直接运行。

二、实现效果

  • 注册页:输入账号、密码、确认密码,空值 / 密码不一致弹出提示
  • 注册成功自动跳转到登录页
  • 登录页可跳转注册页,登录按钮跳转首页
  • 所有输入框双向绑定,数据实时获取

三、核心知识点

  • @State 状态变量:存储账号、密码数据
  • TextInput 双向绑定:$ 语法实现双向数据绑定
  • router 页面路由:页面之间互相跳转
  • AlertDialog 弹窗提示:表单校验失败提示
  • Column/Row 弹性布局:实现登录注册标准 UI

四、项目页面配置 pages.json

项目根目录 pages.json,src 数组中写入所有页面路径,系统自动识别页面,跳转直接填路径字符串即可:

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

五、完整项目源码

1. 注册页面 RouterRegister.ets

typescript 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.banner1')) .width(120) .height(120) .borderRadius(60) Text("注 册") .fontSize(32) .fontWeight(FontWeight.Bolder) // 账号输入 Row(){ Text("账号") .fontSize(26) .width('40%') .textAlign(TextAlign.Center) TextInput({text: $username}) .width('60%') .height(50) } // 密码输入 Row(){ Text("密码") .fontSize(26) .width('40%') .textAlign(TextAlign.Center) TextInput({text: $password}) .width('60%') .height(50) .type(InputType.Password) } // 确认密码 Row(){ Text("确认密码") .fontSize(26) .width('40%') .textAlign(TextAlign.Center) TextInput({text: $password2}) .width('60%') .height(50) .type(InputType.Password) } // 跳转登录 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/RouterLogin" }) } else { // 注册失败弹窗 AlertDialog.show({ title:"注册失败", message:"账号密码不能为空,且两次密码必须一致!" }) } }) } .width('100%') .height('100%') .padding(15) } }

2. 登录页面 RouterLogin.ets

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

3. 首页 HomePage.ets(接收路由传递参数并渲染)

import router from '@ohos.router'; @Entry @Component struct HomePage{ // 接收传递过来的用户名 @State username:string = "" // 页面每次显示时触发,获取路由传参 onPageShow(): void { // 获取跳转携带的参数 const params = router.getParams() as Record<string,string> if (params){ this.username = params.username } } build() { Column() { Text(`你好 ${this.username}`) .fontSize(30) .margin({top:100}) } .width('100%') .height('100%') } }

七、总结

本篇实现了鸿蒙基础的登录注册完整业务流程,涵盖 ArkTS 最核心的:状态管理、双向绑定、路由跳转、表单校验、弹窗提示。代码简洁易懂,非常适合鸿蒙零基础入门学习,可直接用于课程作业、实训项目、毕业设计基础模板。

http://www.gsyq.cn/news/1623020.html

相关文章:

  • 2026Word文件压缩至10M完整实操指南,含官方步骤、图片瘦身与清理隐藏内容技巧
  • Claude全方位揭秘:多产品特性、科研支持及常见问题解答
  • codex连接过程中遇到各种报错如何解决(持续更新中)
  • Anthropic 推出测试版 Claude Science:打造面向科学家的 AI 工作台
  • 图吧工具箱
  • 杰理之搭配3in1 dongle1.13.0出现lea连接异【篇】
  • 8051内部结构
  • 1688拍立淘图片搜索API完整文档
  • 10分钟快速搞定Joy-Con手柄连接电脑:终极配置指南
  • Arkime网络流量解密实战:解密TLS流量,提升安全监控与故障排查效率
  • 2026年SD-WAN演进:企业网络架构的下一站选择
  • 100G交换机吞吐下降20%——一次DPDK Hash Cache Locality优化实战(下)
  • 第08章:Docker 数据持久化
  • Selenium ActionChains 实战指南:从原理到高级交互自动化
  • 鸿蒙 ArkTS 最全完整版知识点总结
  • 2026 年干细胞存储怎么选?四家机构服务与技术全景解析
  • 以阿米巴思维激活企业最小作战单元,破解团队经营效能困境
  • 2026揭阳黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • GetQzonehistory:5步找回QQ空间10年记忆的Python神器
  • C++ LibTorch 端侧实用技巧(嵌入式 / Jetson / 边缘 Linux,低资源)
  • 特朗普政府取消对 Anthropic 两款 AI 模型出口管制,此前公司加强安全防范
  • 耗时三月!3D 打印迷你潜艇实现水族箱自动穿梭与充电
  • PCB自动化收放板设备的技术演进与国产替代路径
  • 提升办公效率|OpenClaw 本地部署全套排错与安装步骤(包含安装包)
  • 《2026年跨境电商现在入行还能赚大钱吗?实测TikTok小店/Shopee3类蓝海赛道,避开90%新手踩坑的零成本运营干货盘点》
  • 当预算与交期面临挑战:一种高性价比车载数采架构的可行性与能力解析
  • 空洞骑士模组管理器终极指南:Scarab让你的游戏体验焕然一新
  • Threads升级实时聊天:佼佼者可主持,还能分享帖子至动态!
  • Hermes 上手指南:AI 编程工作流的新选择,用真实案例讲清边界
  • 深圳两家企业同日称估值破200亿,“最像特斯拉”的智平方能否撑起高估值?