news 2026/7/2 3:50:53

注册页传参 + 首页接收参数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
注册页传参 + 首页接收参数

一、左侧页面:RouterRegister 注册页面核心知识点

1. 路由跳转 + 页面传参

router.pushUrl({ url:"pages/HomePage", params:{ username:this.username, password:this.password } })
  • router.pushUrl({})作用:打开新页面,页面栈新增一条记录,可返回上一页。
  • url属性填写目标页面在 pages 文件夹的路径,路径字符串末尾必须加逗号,否则报语法错误(截图圈出 url 行就是易错点)。
  • params对象用于携带数据传给下一个页面,可以传递多个自定义字段(账号、密码)。
注意点
  • url 路径写错、页面未在main_pages.json注册,跳转空白 / 报错;
  • url 与 params 是同一个对象的两个属性,中间必须用逗号分隔。

2. 表单多条件校验逻辑

if ((this.username!="") && (this.password!="") && (this.password2!="") && (this.password==this.password2))
  • &&并且:所有条件全部满足才会执行跳转;
  • 校验四条规则:账号非空、密码非空、确认密码非空、两次密码完全一致;
  • 任意一条不满足,进入 else 弹窗提示。

3. AlertDialog 弹窗提示

AlertDialog.show({ title:"注册失败", message:`注册的两次密码为空或者不一致,${this.username}` })
  • 作用:表单校验失败弹出提示框,告知用户填写错误;
  • 必备导入:import AlertDialog from '@ohos.promptAction';,不导入直接标红;
  • `模板字符串`:可以通过${变量}把账号动态拼接在提示文字里。

4. @State 响应式变量

@State username:string = "" @State password:string = "" @State password2:string = ""
  • @State装饰器:变量发生变化,页面绑定该变量的输入框、文字自动刷新;
  • 三个变量分别绑定账号、密码、确认密码输入框,实现双向数据绑定;
  • 规范:必须赋初始空值"",不能只定义不赋值。

5. 点击事件 onClick

Button("立即注册") .onClick(()=>{ // 校验+跳转/弹窗逻辑 })
  • onClick()绑定点击回调,点击按钮才执行内部校验代码;
  • 适用场景:按钮、文字、图片等所有可点击组件。

6. 布局基础 Column

Column({space:25}){ // 所有输入框、按钮、文字 }
  • 垂直布局,内部组件从上到下排列;
  • space:25统一设置内部组件上下间距;
  • 页面唯一根布局,所有 UI 必须包裹在 Column 内。

二、右侧页面:HomePage 首页接收路由参数知识点

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}`) } } }

1. 生命周期函数 onPageShow ()

  1. 触发时机:页面每次显示、打开都会自动执行;
  2. 专门用来接收上一页路由传递过来的参数;
  3. 不能写在 build 内部,必须写在 struct 内、build 外部。

2. 接收参数核心 APIrouter.getParams()

const params = router.getParams() as Record<string,string>
  • router.getParams():获取上一页params携带的全部数据;
  • as Record<string,string>:类型断言,告诉编译器参数是「字符串键 + 字符串值」对象,消除类型报错;
  • if(params)判空:防止没有参数时访问params.username导致程序崩溃。

3. 变量赋值与页面自动刷新

this.username = params.username

因为username@State修饰,赋值完成后下方Text文字立刻更新,展示传递过来的账号

4. 动态文本模板字符串

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

反引号`模板语法,${变量名}直接嵌入文字,实现动态文字展示用户名。

5. 页面基础修饰器

  • @Entry:标记当前文件为独立页面,模拟器可单独运行;
  • @Component:声明这是 ArkUI 自定义组件;
  • 一个页面只能有一个被@Entry修饰的 struct。

6. 导入路由模块

import router from '@ohos.router';

只要使用router.pushUrlrouter.getParams,页面顶部必须导入路由工具,否则代码标红。

三、整套页面完整业务流程总结

  • 注册页输入账号、密码、确认密码,内容实时存入@State变量;
  • 点击【立即注册】触发onClick,执行多条件表单校验;
  • 填写合规:通过router.pushUrl携带 username、password 跳转到 HomePage;
  • HomePage 页面打开自动执行onPageShow,调用router.getParams拿到传递的账号;
  • 将参数赋值给页面@State username,页面文字自动渲染:你好 xxx
  • 填写不合规:弹出 AlertDialog 弹窗提示注册失败。

四、高频易错点汇总

  • pushUrl内部 url 行末尾缺少逗号,直接报语法红波浪;
  • 使用 AlertDialog 忘记导入@ohos.promptAction
  • 使用路由忘记顶部import router
  • 接收参数时不加if(params)判空,无参数进入页面直接闪退;
  • 页面没有唯一根 Column 布局,编译报错;
  • @State变量不赋初始值,运行异常;
  • 目标页面未在 main_pages.json 注册,跳转空白页面。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 3:50:25

深海迷航2/异星水域2 豪华中文版免费下载 水下生存建造+联机

获取地址&#xff1a;深海迷航2/异星水域2 飞船坠落在外星海洋卫星&#xff0c;你要在珊瑚礁与千米深渊间采集资源、制造工具、搭建海底基地并驾驶模块化潜水器深入未知海域。 本作首次支持最多四人联机共建与探索&#xff0c;本包含简体中文界面&#xff0c;解压运行&#x…

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

面对“分钟级”响应要求,如何设计商业清洁预约平台的推送架构?

## 一、从业务场景看推送架构的挑战 商业清洁预约平台的核心竞争力在于**响应速度**——论文中将其总结为从“天”级到“分钟”级的跃升。但这背后隐藏着一组尖锐的技术矛盾&#xff1a; **矛盾一&#xff1a;实时性与成本的对抗。** 服务商需要第一时间感知新需求&#xff0…

作者头像 李华
网站建设 2026/7/2 3:47:54

门店说活动做了,怎么证明是真的?

导语&#xff1a; 药企在院外终端开展活动时&#xff0c;经常遇到门店虚报执行、材料造假、效果无法验证等问题。如何监控终端活动执行的真实性&#xff1f;以下是实操要点和监控方案。一、为什么终端活动执行容易被虚报&#xff1f; 很多药企认为&#xff0c;门店反馈活动执行…

作者头像 李华
网站建设 2026/7/2 3:46:41

拱墅区专业乐队培训选择指南

今天整理了杭州沸城音乐的公开信息&#xff0c;这篇内容是针对想在杭州拱墅区找乐队训练培训的朋友整理的&#xff0c;我只放这家机构自己公开的历史、师资、课程、学员成果相关信息。先给大家提个醒&#xff1a;以下内容只展示机构自身的数据&#xff0c;不做和其他机构的优劣…

作者头像 李华
网站建设 2026/7/2 3:46:29

VBA技术资料502_VBA_检索文件名及文件的扩展名

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

作者头像 李华
网站建设 2026/7/2 3:45:53

Codex 线程太多怎么整理?一个适合批量重命名的通用提示词

Codex 线程太多怎么整理&#xff1f;一个适合批量重命名的通用提示词 最近越用 Codex 越顺手&#xff0c;不知不觉我已经开了四百多个线程了&#xff08;还不算归档的&#xff09;。 问题也慢慢出来了&#xff1a; 很多线程没有及时命名默认标题太长&#xff0c;像原始提示词有…

作者头像 李华