第 55 课2026.09.17
让按钮点击调用上一课同一个 Handle 的关闭动作。
第 55 课:按钮点击触发关闭
- 日期:2026-09-17
- 课程序号:第 55 课
- 知识点:按钮点击触发关闭
用途
让按钮点击调用上一课同一个 Handle 的关闭动作。
核心概念
Button.onClick 调用 handle.close();enabled 继续读取 handle.isClosed()。本课只验证动作被触发,异步期间的视觉刷新留给下一课。
最小代码或操作示例
ts
@Entry
@Component
struct ClosePage {
private handle: Handle = new Handle(async (): Promise<void> => {
console.info('release once')
})
build() {
Button('关闭资源')
.enabled(!this.handle.isClosed())
.onClick(() => { this.handle.close() })
}
}3~5 分钟练习
点击两次按钮,观察底层释放日志出现几次。
参考答案
底层 releaseFn 只执行一次;Handle.close() 的幂等契约来自第 50 课。本课尚未加入异步界面状态,不能仅凭这段示例断言按钮已经重绘。
与上一课的联系
沿用第 54 课的 ClosePage、handle 与 .enabled(!this.handle.isClosed());本课只增加点击调用 handle.close();下一课可在异步关闭期间显示进行中状态并触发完成后的重绘。
时效校验
时效校验:2026-09-24(华为当前 Button 使用指南与禁用控制文档;本机 HarmonyOS 26.0.0/API 26 SDK)。onClick、enabled 自 API 7 可用,未见 @deprecated 或 @useinstead。