#鸿蒙通关秘籍#如何实现自定义组件方式的全局弹窗封装?

HarmonyOS
2024-12-03 11:19:59
503浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
系统小魔头

为了实现自定义组件方式的全局弹窗封装,可以按照以下步骤进行:

  1. 创建一个自定义弹窗组件,包含可见性状态和交互事件:

    @CustomDialog
    export struct CustomDialogView {
      @Link visible: boolean;
      controller: CustomDialogController;
      onCancel?: () => void;
      onConfirm?: () => void;
    
      build() {
        Row() {
          Button()
            .onClick(() => {
              this.visible = false;
              this.onCancel?.();
            })
        }
      }
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
  2. 通过新建组件对弹窗进行封装,来处理可见性变化和控制弹窗的打开关闭:

    @Component
    export struct Dialog {
      @Watch("onChange") @Link visible: boolean;
      onCancel?: () => void;
      onConfirm?: () => void;
      private controller = new CustomDialogController({
        builder: CustomDialogView({
          visible: $visible,
          onCancel: this.onCancel,
          onConfirm: this.onConfirm,
        }),
      })
    
      onChange(): void {
        if (this.visible) {
          this.controller.open();
        } else {
          this.controller.close();
        }
      }
    
      build() {}
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
  3. 在使用时导入封装好的组件并设置可见性状态:

    @Component
    export struct CustomDialog {
      @State visible: boolean = false;
    
      build() {
        Column({ space: 20 }) {
          Button()
            .onClick(() => this.visible = !this.visible)
    
          Dialog({
            visible: $visible,
          })
        }
      }
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
分享
微博
QQ
微信
回复
2024-12-03 12:16:02


相关问题
如何封装全局自定义弹窗
1029浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗实现
936浏览 • 1回复 待解决
HarmonyOS 如何封装自定义弹窗
963浏览 • 1回复 待解决
HarmonyOS 如何创建自定义全局弹窗
795浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗demo
1234浏览 • 1回复 待解决
HarmonyOS 使用全局自定义弹窗
835浏览 • 1回复 待解决
HarmonyOS 自定义弹窗封装问题
921浏览 • 1回复 待解决
如何全局实现一个自定义dialog弹窗
3699浏览 • 1回复 待解决
HarmonyOS 自定义dialog封装全局调用
833浏览 • 1回复 待解决
HarmonyOS 关于自定义弹窗封装调用
1508浏览 • 2回复 待解决
HarmonyOS 全局自定义弹窗无法弹出
874浏览 • 1回复 待解决
HarmonyOS 自定义弹窗封装后不显示
1247浏览 • 1回复 待解决