Skip to content

Commit 18e1642

Browse files
committed
fix: controlled tooltips are not close properly
1 parent d80999e commit 18e1642

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

packages/@react-stately/tooltip/src/useTooltipTriggerState.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export function useTooltipTriggerState(props: TooltipTriggerProps = {}): Tooltip
4646
let {isOpen, open, close} = useOverlayTriggerState(props);
4747
let id = useMemo(() => `${++tooltipId}`, []);
4848
let closeTimeout = useRef<ReturnType<typeof setTimeout>>();
49+
let closeCallback = useRef<() => void>(close);
4950

5051
let ensureTooltipEntry = () => {
5152
tooltips[id] = hideTooltip;
@@ -81,11 +82,11 @@ export function useTooltipTriggerState(props: TooltipTriggerProps = {}): Tooltip
8182
if (immediate || closeDelay <= 0) {
8283
clearTimeout(closeTimeout.current);
8384
closeTimeout.current = null;
84-
close();
85+
closeCallback.current();
8586
} else if (!closeTimeout.current) {
8687
closeTimeout.current = setTimeout(() => {
8788
closeTimeout.current = null;
88-
close();
89+
closeCallback.current();
8990
}, closeDelay);
9091
}
9192

@@ -119,6 +120,10 @@ export function useTooltipTriggerState(props: TooltipTriggerProps = {}): Tooltip
119120
}
120121
};
121122

123+
useEffect(() => {
124+
closeCallback.current = close;
125+
}, [close]);
126+
122127
// eslint-disable-next-line arrow-body-style
123128
useEffect(() => {
124129
return () => {

0 commit comments

Comments
 (0)