🔥个人主页:杨利杰YJlio
❄️个人专栏:《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》
《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》
《超简单:用Python让Excel飞起来》
🌟让复杂的事情更简单,让重复的工作自动化
文章目录
- 一、先认清两条示例数据
- 二、把点击事件放在对应的行上
- 三、点击回调读取当前行的 ticket
- 四、用观察状态呈现选择反馈
- 五、点哪一行,反馈就应对应哪一条
- 六、行位置、显示标题与业务标识分别看
- 七、显示不对时,沿事件路径排查
- 八、留下点击对象与结果的真实记录
- 写在最后
- 参考资料
大家好,我是杨利杰 YJlio。
原稿里已经有两条工单标题和 ForEach 展示代码。这一节我保留这两条示例数据,补上行点击回调,再用一段“当前选择”文字反馈结果,先把点击路径看清楚。
本篇编号 020,计划日期为 2026 年 10 月 10 日。原稿已保留;补充代码属于学习示例,未执行本机编译或设备实测。配图均为概念示意。
一、先认清两条示例数据
tickets 包含“网络无法连接”和“打印机驱动安装”。它们是演示字符串,不能当作真实工单或现场故障记录。
本次只检查这两条文字,不增加删除、提交或跳转操作。这样出现差异时,可以先把问题缩小到行数据、事件和反馈三个位置。
二、把点击事件放在对应的行上
我沿用原稿的 Column 与 ForEach,通过 Text 展示每条 ticket,并在该 Text 上绑定 onClick。这里的“列表”是两条循环生成的文本行,并没有使用 List 与 ListItem 组件。
完整的最小学习示例如下:
@Entry@Componentstruct Index{@Statetickets:string[]=['网络无法连接','打印机驱动安装'];@StateselectedTicket:string='未选择';build(){Column({space:12}){Text(`当前选择:${this.selectedTicket}`)ForEach(this.tickets,(ticket:string)=>{Text(ticket).width('100%').padding(12).onClick(()=>{this.selectedTicket=ticket})},(ticket:string)=>ticket)}.width('100%').padding(16)}}代码使用 V1 的 @Component 与 @State。如果当前工程采用其他状态管理模板,应先适配再编译。学习系列名称不构成任何 SDK 版本实测证据。
三、点击回调读取当前行的 ticket
ForEach 为每条数据构建 Text。回调中的 ticket 来自这一行的构建参数,所以两行各自关联自己的内容。
onClick 接收的是点击时执行的函数。本例在回调里给 selectedTicket 赋值,不在页面构建过程中提前修改它。
事件绑定、当前行数据和回调中的赋值,应沿同一条路径对应起来。
如果后续改成对象数据,我会让事件接收当前记录或稳定标识,再由处理函数完成业务操作,避免靠页面文字猜是哪条记录。
四、用观察状态呈现选择反馈
selectedTicket 初始为“未选择”。页面顶部 Text 读取该字段,显示“当前选择:未选择”。
点击某行后,回调更新 selectedTicket,依赖它的文字按状态规则更新。这里使用 @State 表达组件内状态,没有弹窗、选中高亮或持久化行为。
本例保留一个反馈位置,因此每次点击都会替换当前选择。这是单条反馈练习,不是多选列表。
五、点哪一行,反馈就应对应哪一条
我把预期结果写成两组对应关系,再到真实工程里逐项验证:
| 点击对象 | 按代码逻辑预期显示 |
|---|---|
| 网络无法连接 | 当前选择:网络无法连接 |
| 打印机驱动安装 | 当前选择:打印机驱动安装 |
先点击第一行,再点击第二行,再返回第一行,可以观察反馈是否随当前点击变化。重复点击同一行时,赋值内容可能没有变化,文字保持相同并不直接说明事件未触发。
事件有没有执行,与显示内容有没有变化,需要分别观察。
六、行位置、显示标题与业务标识分别看
示例使用 ticket 字符串生成 ForEach 的 key,因为这两条字符串不同且本次不修改它们。官方文档要求键值能正确区分对应元素,重复键可能造成非预期渲染。
真实工单可能具有相同标题,标题也可能被修改。因此不能把本例的简化规则直接套到业务列表。应使用适合当前数据的稳定唯一标识,并让点击操作识别同一条记录。
数组位置表示“现在排在第几行”,并不天然等于业务记录身份。插入、删除和排序后,位置可能变化。
七、显示不对时,沿事件路径排查
我准备按四个位置逐步观察:onClick 是否触发、ticket 是否属于当前行、selectedTicket 是否更新、Text 是否读取该字段。
如果点击没有反应,再检查事件绑定位置、可点击区域以及是否有其他组件遮挡。本例为 Text 设置宽度与内边距,真实设备上的触摸表现仍要结合布局验证,不能仅凭图判断。
暂时不加网络、路由或数据提交,可以减少干扰。后续增加业务操作时,再处理重复触发、取消和失败反馈,避免把当前的文字赋值当作完整业务流程。
八、留下点击对象与结果的真实记录
| 核验项 | 预期或需记录内容 | 当前状态 |
|---|---|---|
| 工具与运行环境 | DevEco Studio、SDK/API、设备、窗口 | 待填写 |
| 初次显示 | 当前选择:未选择 | 待实际验证 |
| 点击第一行 | 当前选择:网络无法连接 | 待实际验证 |
| 点击第二行 | 当前选择:打印机驱动安装 | 待实际验证 |
| 返回第一行 | 再次反馈第一行文字 | 待实际验证 |
| 重复点击 | 分别检查事件执行与文字是否变化 | 待实际验证 |
遇到错误时,我会保留编译诊断、点击顺序及修改差异。运行截图应来自自己的练习工程,不能用这组概念图代替设备证据。
预期结果指导验证,实际结果必须来自真实工程记录。
写在最后
这节我在原稿的两行展示基础上,补了一条明确的交互路径:点击当前行,读取 ticket,更新 selectedTicket,再由 Text 显示反馈。
下一篇继续学习页面路由与页面跳转。先确认能识别点击的是哪条数据,再把它带到另一个页面,排查时更容易分清事件问题和路由问题。
参考资料
- OpenHarmony 官方文档:ForEach 循环渲染,用于核对循环构建与键值概念。
- OpenHarmony 官方文档:点击事件,用于核对事件接口;实际 HarmonyOS 工程请以对应 SDK 文档为准。
- 本系列第 020 篇原稿:《列表点击与事件处理》,计划日期 2026-10-10。
声明:本文为个人学习笔记,工单标题是演示数据,代码与配图用于说明交互关系;尚无本机编译或设备实测记录。
返回顶部