diff --git a/src/components/popover/popover.tsx b/src/components/popover/popover.tsx index c0e27e76dc..664013663c 100644 --- a/src/components/popover/popover.tsx +++ b/src/components/popover/popover.tsx @@ -79,13 +79,17 @@ export const Popover = forwardRef((p, ref) => { useImperativeHandle( ref, () => ({ - show: () => setVisible(true), + show: () => { + stateRef.current.isClickShow = true + setVisible(true) + }, hide: () => setVisible(false), visible, }), [visible] ) + const stateRef = useRef({ isClickShow: false }) const targetRef = useRef(null) const floatingRef = useRef(null) const arrowRef = useRef(null) @@ -196,6 +200,10 @@ export const Popover = forwardRef((p, ref) => { useClickAway( () => { if (!props.trigger) return + if (stateRef.current.isClickShow) { + stateRef.current.isClickShow = false + return + } setVisible(false) }, [() => targetRef.current?.element, floatingRef],