文档管理中心
FAQ应用框架开发UI框架组件使用Toggle组件响应点击后会立即渲染并回调。如何实现点击后延迟改变状态并时回调

Toggle组件响应点击后会立即渲染并回调。如何实现点击后延迟改变状态并时回调

使用hitTestBehavior和setTimeout解决。示例代码如下:

收起
自动换行
深色代码主题
复制
  1. @Entry
  2. @Component
  3. struct ToggleDemo {
  4. @State isDarkMode: boolean = false;
  5. private timeoutID?: number;
  6. aboutToDisappear(): void {
  7. clearTimeout(this.timeoutID);
  8. }
  9. build() {
  10. Column() {
  11. Column() {
  12. Toggle({ type: ToggleType.Switch, isOn: $$this.isDarkMode })
  13. .onChange((isOn: boolean) => {
  14. console.info('Toggle.onChange:isOn' + isOn);
  15. this.isDarkMode = isOn;
  16. this.getUIContext().getHostContext()!.getApplicationContext().setColorMode(this.isDarkMode ? 0 : 1);
  17. })
  18. }
  19. // Set hitTestBehavior property to HitTestMode.Block to block Toggle component's event response.
  20. .hitTestBehavior(HitTestMode.Block)
  21. .onClick(() => {
  22. this.timeoutID = setTimeout(() => {
  23. this.isDarkMode = !this.isDarkMode;
  24. }, 1500);
  25. })
  26. }
  27. .width('100%')
  28. .height('100%')
  29. .padding(32)
  30. }
  31. }
在 FAQ 中进行搜索
请输入您想要搜索的关键词