渐进式编程课
鸿蒙 目录
第 58 课2026.09.22

关闭失败后让用户明确知道同一个按钮可以重试,不新增第二份关闭状态。

第 58 课:失败后按钮提示重试

  • 日期:2026-09-22
  • 课程序号:第 58 课
  • 知识点:根据失败提示切换按钮文案

用途或适用场景

关闭失败后让用户明确知道同一个按钮可以重试,不新增第二份关闭状态。

核心概念

按钮文字只读取上一课的 errorMessage、closing 与 handle.isClosed();错误提示属于界面状态,关闭事实仍只由 Handle 管理。

最小代码或操作示例

在第 57 课 ClosePage.build() 中,只替换原来的 Button 文本表达式:

ts
Button(this.handle.isClosed() ? '已关闭' :
  this.closing ? '关闭中…' :
  this.errorMessage.length > 0 ? '重试关闭' : '关闭')
  .enabled(!this.closing && !this.handle.isClosed())
  .onClick(() => { this.close() })

3~5 分钟练习

让第一次 close() 失败,确认按钮显示“重试关闭”;第二次成功后确认显示“已关闭”。

参考答案

失败后 errorMessage.length > 0 选择“重试关闭”;成功后 handle.isClosed() 优先选择“已关闭”。

与上一课的联系

继承第 57 课的 ClosePage、errorMessage、closing 和 handle;本课只改变按钮文案的条件选择,不改关闭调用;完成后下一课可在重试开始时清除旧提示。

时效校验

时效校验:2026-09-24(华为当前 Button 与禁用控制文档;本机 HarmonyOS 26.0.0/API 26 SDK)。Button、enabled、onClick 当前可用且本机声明未见 @deprecated 或 @useinstead。

官方参考