diff --git a/packages/components/dialog/Dialog.tsx b/packages/components/dialog/Dialog.tsx index f1fa321e2b..2cee8df6b1 100644 --- a/packages/components/dialog/Dialog.tsx +++ b/packages/components/dialog/Dialog.tsx @@ -150,14 +150,18 @@ const Dialog = forwardRef((originalProps, ref) => { } const onMaskClick = (e: React.MouseEvent) => { - if (showOverlay && (closeOnOverlayClick ?? local.closeOnOverlayClick)) { - // 判断点击事件初次点击是否为内容区域 - if (contentClickRef.current) { - contentClickRef.current = false; - } else if (e.target === dialogPosition.current) { - onOverlayClick?.({ e }); - onClose?.({ e, trigger: 'overlay' }); - } + if (!showOverlay) return; + // 判断点击事件初次点击是否为内容区域 + if (contentClickRef.current) { + contentClickRef.current = false; + return; + } + if (e.target !== dialogPosition.current) return; + // 触发蒙层点击事件 + onOverlayClick?.({ e }); + // 触发关闭事件 + if (closeOnOverlayClick ?? local.closeOnOverlayClick) { + onClose?.({ e, trigger: 'overlay' }); } }; diff --git a/packages/tdesign-react/.changelog/pr-4065.md b/packages/tdesign-react/.changelog/pr-4065.md new file mode 100644 index 0000000000..d762137883 --- /dev/null +++ b/packages/tdesign-react/.changelog/pr-4065.md @@ -0,0 +1,6 @@ +--- +pr_number: 4065 +contributor: TidySongS +--- + +- fix(Dialog): 修复 `closeOnOverlayClick` 为 `false` 时,`onOverlayClick` 无法触发的问题 @TidySongS ([#4065](https://github.com/Tencent/tdesign-react/pull/4065))