渐进式编程课
鸿蒙 目录
第 54 课2026.09.16

让按钮读取 Handle 的关闭事实,为后续点击交互准备禁用条件。

第 54 课:根据关闭状态禁用按钮

  • 日期:2026-09-16
  • 课程序号:第 54 课
  • 知识点:根据关闭状态禁用按钮

用途

让按钮读取 Handle 的关闭事实,为后续点击交互准备禁用条件。

核心概念

Button.enabled 接收 boolean;closed 仍由 Handle 单一持有。本课只显示当前状态,状态变化后的界面刷新在第 56 课加入。

最小代码或操作示例

ts
@Entry
@Component
struct ClosePage {
  private handle: Handle = new Handle(async (): Promise<void> => {})

  build() {
    Button(this.handle.isClosed() ? '已关闭' : '关闭')
      .enabled(!this.handle.isClosed())
  }
}

3~5 分钟练习

暂时把 .enabled(!this.handle.isClosed()) 改成 .enabled(this.handle.isClosed()),观察新建 Handle 对应的按钮为何不可点击,再恢复原条件。

参考答案

新建 Handle 的 isClosed() 为 false;直接作为 enabled 参数会禁用按钮。恢复取反后,未关闭时可点击、已关闭时才禁用;本课不处理运行中的状态变化。

与上一课的联系

继承第 53 课完整的 Handle 及 isClosed() 方法;本课只让按钮在初次构建时读取这一事实;下一课可增加点击触发关闭。

时效校验

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

官方参考