Skip to content

Commit b3b4500

Browse files
committed
Merge branch 'tangye1234-perf/tooltip'
2 parents e261047 + 5fbf6eb commit b3b4500

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

Diff for: packages/react/tooltip/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ export {
1717
Arrow,
1818
} from './tooltip';
1919
export type {
20-
TooltipProviderProps,
2120
TooltipProps,
21+
TooltipProviderProps,
2222
TooltipTriggerProps,
2323
TooltipPortalProps,
2424
TooltipContentProps,

Diff for: packages/react/tooltip/src/tooltip.tsx

+7-7
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const DEFAULT_DELAY_DURATION = 700;
3030
const TOOLTIP_OPEN = 'tooltip.open';
3131

3232
type TooltipProviderContextValue = {
33-
isOpenDelayed: boolean;
33+
isOpenDelayedRef: React.MutableRefObject<boolean>;
3434
delayDuration: number;
3535
onOpen(): void;
3636
onClose(): void;
@@ -71,7 +71,7 @@ const TooltipProvider: React.FC<TooltipProviderProps> = (
7171
disableHoverableContent = false,
7272
children,
7373
} = props;
74-
const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);
74+
const isOpenDelayedRef = React.useRef(true);
7575
const isPointerInTransitRef = React.useRef(false);
7676
const skipDelayTimerRef = React.useRef(0);
7777

@@ -83,16 +83,16 @@ const TooltipProvider: React.FC<TooltipProviderProps> = (
8383
return (
8484
<TooltipProviderContextProvider
8585
scope={__scopeTooltip}
86-
isOpenDelayed={isOpenDelayed}
86+
isOpenDelayedRef={isOpenDelayedRef}
8787
delayDuration={delayDuration}
8888
onOpen={React.useCallback(() => {
8989
window.clearTimeout(skipDelayTimerRef.current);
90-
setIsOpenDelayed(false);
90+
isOpenDelayedRef.current = false;
9191
}, [])}
9292
onClose={React.useCallback(() => {
9393
window.clearTimeout(skipDelayTimerRef.current);
9494
skipDelayTimerRef.current = window.setTimeout(
95-
() => setIsOpenDelayed(true),
95+
() => (isOpenDelayedRef.current = true),
9696
skipDelayDuration
9797
);
9898
}, [skipDelayDuration])}
@@ -229,9 +229,9 @@ const Tooltip: React.FC<TooltipProps> = (props: ScopedProps<TooltipProps>) => {
229229
trigger={trigger}
230230
onTriggerChange={setTrigger}
231231
onTriggerEnter={React.useCallback(() => {
232-
if (providerContext.isOpenDelayed) handleDelayedOpen();
232+
if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();
233233
else handleOpen();
234-
}, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen])}
234+
}, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen])}
235235
onTriggerLeave={React.useCallback(() => {
236236
if (disableHoverableContent) {
237237
handleClose();

0 commit comments

Comments
 (0)