在封装全局自定义弹窗的时候,为什么点击确定的时候,回调函数无法触发呢(HarmonyOS 鸿蒙Next)

在封装全局自定义弹窗的时候,为什么点击确定的时候,回调函数无法触发呢(HarmonyOS 鸿蒙Next)

FBConfirmDialogUtil.showConfirm({
  title: "确认退出登录???", confirmCallback: () => {
    console.error("testTYP: 处理退出逻辑")
  }
} as ParamsInterface)

export interface ParamsInterface {
  title: string;
  confirmCallback: () => void;
}

export class FBConfirmDialogUtil {
  static showConfirm(param: ParamsInterface): void {
    console.error("testTYP param.confirmCallback.toString : " + param.confirmCallback.toString())
    // 获取上下文
    let uiContext = AppStorage.get('UIContext') as UIContext
    let contentNode = new ComponentContent<ParamsInterface>(uiContext,
      wrapBuilder<[ParamsInterface]>(ConfirmBuilder), param)
    FBPromptActionClassForConfirm.setContext(uiContext);
    FBPromptActionClassForConfirm.setContentNode(contentNode);
    FBPromptActionClassForConfirm.setOptions({ alignment: DialogAlignment.Center });
    FBPromptActionClassForConfirm.openDialog()
  }
}

//这里回调函数
.onClick(() => {
  
  param.confirmCallback
  FBPromptActionClassForConfirm.closeDialog()
  
})

更多关于在封装全局自定义弹窗的时候,为什么点击确定的时候,回调函数无法触发呢(HarmonyOS 鸿蒙Next)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

你的代码缺一些关键代码,无法复现问题,最好可以贴全一点

更多关于在封装全局自定义弹窗的时候,为什么点击确定的时候,回调函数无法触发呢(HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,封装全局自定义弹窗时,点击确定按钮回调函数无法触发,可能是以下原因之一:

  1. 回调函数未正确绑定:确保在创建弹窗时,回调函数已正确绑定到确定按钮的点击事件。检查onClick事件监听器是否设置正确。

  2. 作用域问题:回调函数可能不在当前作用域内。确保回调函数在弹窗组件的作用域内可访问。

  3. 事件冒泡或捕获问题:检查是否有其他事件处理程序阻止了事件冒泡或捕获,导致回调函数未执行。

  4. 生命周期问题:弹窗组件可能在其生命周期内被销毁或未正确初始化,导致回调函数无法触发。确保弹窗组件的生命周期管理正确。

  5. 异步问题:如果回调函数涉及异步操作,确保异步操作已完成或正确处理了异步回调。

  6. 调试信息:检查控制台输出,查看是否有错误或警告信息,这可能有助于定位问题。

  7. API变更:鸿蒙Next版本可能有API变更,确保使用的API与当前版本兼容。

  8. 组件状态:弹窗组件可能处于不可交互状态,确保组件状态允许用户交互。

  9. 事件传递:检查事件是否从确定按钮正确传递到回调函数。

  10. 代码逻辑:检查代码逻辑,确保没有条件阻止回调函数执行。

确保以上问题已排查,回调函数应能正常触发。

回到顶部