From a5680f4d2158dda9834975bc740d83c958c0d61a Mon Sep 17 00:00:00 2001 From: Haixing <65376724+HaixingOoO@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:08:23 +0800 Subject: [PATCH] Fix(Dialog): fix render multiple binding events (#2749) * fix(Dialog): fix render multiple binding events * fix(dialog): fix render multiple binding events * fix(dialog): fix ssr render --- src/dialog/hooks/useDialogPosition.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/dialog/hooks/useDialogPosition.ts b/src/dialog/hooks/useDialogPosition.ts index f738d71f2..7909ab007 100644 --- a/src/dialog/hooks/useDialogPosition.ts +++ b/src/dialog/hooks/useDialogPosition.ts @@ -1,6 +1,7 @@ -import { useEffect, useRef } from 'react'; +import { MutableRefObject, useEffect, useRef } from 'react'; +import useIsomorphicLayoutEffect from '../../_util/useLayoutEffect'; -export default function useDialogPosition(visible, dialogCardRef) { +export default function useDialogPosition(visible: boolean, dialogCardRef: MutableRefObject) { const mousePosRef = useRef(null); const getClickPosition = (e: MouseEvent) => { @@ -13,13 +14,8 @@ export default function useDialogPosition(visible, dialogCardRef) { }, 100); }; - if (typeof document !== 'undefined') { + useIsomorphicLayoutEffect(() => { document.addEventListener('click', getClickPosition, true); - } - - useEffect(() => { - document.addEventListener('click', getClickPosition, true); - return () => { document.removeEventListener('click', getClickPosition, true); };