鸿蒙 ArkTS 实战:便携筷子库存的状态建模、算法与交互实现
鸿蒙 ArkTS 实战:便携筷子库存的状态建模、算法与交互实现
前言
便携筷子库存页面将筷子分为清洁可用、外带和待清洗三种状态,并通过按钮完成完整流转。
项目通过 ArkTS、ArkUI 和 @State 管理 clean、out、wash。
核心逻辑是 clean:外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
默认状态为 clean=4、out=1、wash=0,页面展示 可用双数、外带双数和待清洗双数。
图 1:DevEco Studio 中的 ArkTS 开发环境。
页面上的结果均由当前状态实时计算。
边界判断必须与按钮、滑块或核心函数保持一致。
便携筷子库存的实现重点在于:外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
一、业务对象
1.1 数据结构
便携筷子库存使用 clean、out、wash 描述业务对象,所有字段都能追溯到页面真实状态。
1.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
1.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
1.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
二、状态字段
2.1 数据结构
便携筷子库存使用 clean、out、wash 描述状态字段,所有字段都能追溯到页面真实状态。
2.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
2.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
2.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
@State clean:number=4;
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
三、核心规则
3.1 数据结构
便携筷子库存使用 clean、out、wash 描述核心规则,所有字段都能追溯到页面真实状态。
3.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
3.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
3.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 读取页面当前状态。
- 执行本次交互规则。
- 应用范围或条件保护。
- 刷新文字、颜色和统计结果。
四、输入控件
4.1 数据结构
便携筷子库存使用 clean、out、wash 描述输入控件,所有字段都能追溯到页面真实状态。
4.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
4.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
4.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
五、事件回调
5.1 数据结构
便携筷子库存使用 clean、out、wash 描述事件回调,所有字段都能追溯到页面真实状态。
5.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
5.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
5.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
@State out:number=1;
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
六、边界保护
6.1 数据结构
便携筷子库存使用 clean、out、wash 描述边界保护,所有字段都能追溯到页面真实状态。
6.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
6.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
6.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 状态来源:clean、out、wash。
- 核心行为:clean。
- 页面输出:可用双数、外带双数和待清洗双数。
- 操作入口:外带、归还待清洗、全部清洗归位、新增一双。
七、状态反馈
7.1 数据结构
便携筷子库存使用 clean、out、wash 描述状态反馈,所有字段都能追溯到页面真实状态。
7.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
7.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
7.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
八、默认运行
8.1 数据结构
便携筷子库存使用 clean、out、wash 描述默认运行,所有字段都能追溯到页面真实状态。
8.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
8.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
8.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
@State wash:number=0;
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
九、状态迁移
9.1 数据结构
便携筷子库存使用 clean、out、wash 描述状态迁移,所有字段都能追溯到页面真实状态。
9.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
9.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
9.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 读取页面当前状态。
- 执行本次交互规则。
- 应用范围或条件保护。
- 刷新文字、颜色和统计结果。
十、数值与数组更新
10.1 数据结构
便携筷子库存使用 clean、out、wash 描述数值与数组更新,所有字段都能追溯到页面真实状态。
10.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
10.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
10.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
十一、声明式刷新
11.1 数据结构
便携筷子库存使用 clean、out、wash 描述声明式刷新,所有字段都能追溯到页面真实状态。
11.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
11.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
11.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
this.clean--;this.out++
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
十二、布局层级
12.1 数据结构
便携筷子库存使用 clean、out、wash 描述布局层级,所有字段都能追溯到页面真实状态。
12.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
12.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
12.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
十三、颜色语义
13.1 数据结构
便携筷子库存使用 clean、out、wash 描述颜色语义,所有字段都能追溯到页面真实状态。
13.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
13.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
13.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
十四、异常输入
14.1 数据结构
便携筷子库存使用 clean、out、wash 描述异常输入,所有字段都能追溯到页面真实状态。
14.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
14.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
14.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 状态来源:clean、out、wash。
- 核心行为:clean。
- 页面输出:可用双数、外带双数和待清洗双数。
- 操作入口:外带、归还待清洗、全部清洗归位、新增一双。
this.out--;this.wash++
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
十五、验证场景
15.1 数据结构
便携筷子库存使用 clean、out、wash 描述验证场景,所有字段都能追溯到页面真实状态。
15.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
15.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
15.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 读取页面当前状态。
- 执行本次交互规则。
- 应用范围或条件保护。
- 刷新文字、颜色和统计结果。
十六、性能表现
16.1 数据结构
便携筷子库存使用 clean、out、wash 描述性能表现,所有字段都能追溯到页面真实状态。
16.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
16.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
16.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
十七、维护方式
17.1 数据结构
便携筷子库存使用 clean、out、wash 描述维护方式,所有字段都能追溯到页面真实状态。
17.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
17.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
17.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
this.clean+=this.wash;this.wash=0
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
十八、代码职责
18.1 数据结构
便携筷子库存使用 clean、out、wash 描述代码职责,所有字段都能追溯到页面真实状态。
18.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
18.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
18.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
十九、运行结论
19.1 数据结构
便携筷子库存使用 clean、out、wash 描述运行结论,所有字段都能追溯到页面真实状态。
19.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
19.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
19.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
二十、项目启示
20.1 数据结构
便携筷子库存使用 clean、out、wash 描述项目启示,所有字段都能追溯到页面真实状态。
20.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
20.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
20.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
.enabled(this.clean>0)
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
二十一、真实源码分段
21.1 数据结构
便携筷子库存使用 clean、out、wash 描述真实源码分段,所有字段都能追溯到页面真实状态。
21.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
21.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
21.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 读取页面当前状态。
- 执行本次交互规则。
- 应用范围或条件保护。
- 刷新文字、颜色和统计结果。
二十二、运行案例
22.1 数据结构
便携筷子库存使用 clean、out、wash 描述运行案例,所有字段都能追溯到页面真实状态。
22.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
22.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
22.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
- 状态来源:clean、out、wash。
- 核心行为:clean。
- 页面输出:可用双数、外带双数和待清洗双数。
- 操作入口:外带、归还待清洗、全部清洗归位、新增一双。
二十三、技术取舍
23.1 数据结构
便携筷子库存使用 clean、out、wash 描述技术取舍,所有字段都能追溯到页面真实状态。
23.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
23.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
23.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
.enabled(this.out>0)
该片段直接对应 便携筷子库存 源码中的真实定义或交互,不包含项目之外的假设。
二十四、总结
24.1 数据结构
便携筷子库存使用 clean、out、wash 描述总结,所有字段都能追溯到页面真实状态。
24.2 业务规则
外带从 clean 转入 out,归还从 out 转入 wash,全部清洗再把 wash 转回 clean;新增动作直接补充 clean。
核心表达式为 clean → out → wash → clean。
24.3 交互刷新
外带、归还待清洗、全部清洗归位、新增一双会修改对应状态,ArkUI 随后刷新可用双数、外带双数和待清洗双数。
24.4 边界结论
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
| 维度 | 当前实现 | 页面作用 |
|---|---|---|
| 状态 | clean、out、wash | 保存业务数据 |
| 规则 | clean → out → wash → clean | 计算显示结果 |
| 边界 | 外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。 | 阻止非法结果 |
| 操作 | 外带、归还待清洗、全部清洗归位、新增一双 | 驱动状态变化 |
二十五、实现复盘
25.1 状态入口
便携筷子库存以 clean、out、wash 作为唯一状态来源,页面不额外保存可由公式得到的显示结果。
25.2 默认结果
初始值 clean=4、out=1、wash=0 让页面启动后立即呈现可观察结果。
25.3 正常操作
执行 外带、归还待清洗、全部清洗归位、新增一双 时,只修改本次业务需要的字段。
25.4 边界操作
外带按钮要求 clean 大于零,归还按钮要求 out 大于零,避免任何库存被扣成负数。
25.5 结果刷新
状态变化后,可用双数、外带双数和待清洗双数会由声明式组件重新计算并显示。
25.6 颜色反馈
正常与异常状态使用不同颜色表达,但文字结论始终是主要信息。
25.7 按钮门槛
按钮可用条件与库存或状态门槛绑定,避免用户进入无效分支。
25.8 范围限制
Slider 的最小值、最大值和步长共同约束可输入范围。
25.9 计算复用
核心逻辑 clean 被集中表达,文本和颜色可以共享同一判断。
25.10 数据一致性
同一次操作涉及多个字段时,源码在一个回调中完成同步更新。
25.11 列表或数值
数值状态直接赋值,对象数组则通过新数组引用触发列表刷新。
25.12 异常路径
异常路径不会生成负库存、越界结果或互相冲突的提示。
25.13 复现步骤
先观察默认值,再改变一个输入并执行主要动作,即可复现完整状态变化。
25.14 维护重点
维护时应保持 clean → out → wash → clean 与页面提示语义一致。
25.15 适用场景
该页面适合需要快速记录、检查、估算或库存流转的轻量场景。
25.16 完整闭环
输入、规则、边界和反馈构成闭环,当前源码已经覆盖文章描述的全部能力。
二十六、运行验证
26.1 首屏验证
打开便携筷子库存 后,默认数字、状态文字和控件位置应与源码初始值一致。
26.2 操作验证
每次只改变一个输入并执行对应按钮,可以清楚观察状态字段与结果区域的关联。
26.3 边界验证
将滑块移动到最小值和最大值,再触发操作,页面仍应保持合法结果与明确提示。
26.4 回归验证
完成一次完整业务流后重新检查核心数字,输入、计算和显示应保持一致。
相关资源
相关资源:
更多推荐




所有评论(0)