@@ -30,7 +30,7 @@ const DEFAULT_DELAY_DURATION = 700;
30
30
const TOOLTIP_OPEN = 'tooltip.open' ;
31
31
32
32
type TooltipProviderContextValue = {
33
- isOpenDelayed : boolean ;
33
+ isOpenDelayedRef : React . MutableRefObject < boolean > ;
34
34
delayDuration : number ;
35
35
onOpen ( ) : void ;
36
36
onClose ( ) : void ;
@@ -71,7 +71,7 @@ const TooltipProvider: React.FC<TooltipProviderProps> = (
71
71
disableHoverableContent = false ,
72
72
children,
73
73
} = props ;
74
- const [ isOpenDelayed , setIsOpenDelayed ] = React . useState ( true ) ;
74
+ const isOpenDelayedRef = React . useRef ( true ) ;
75
75
const isPointerInTransitRef = React . useRef ( false ) ;
76
76
const skipDelayTimerRef = React . useRef ( 0 ) ;
77
77
@@ -83,16 +83,16 @@ const TooltipProvider: React.FC<TooltipProviderProps> = (
83
83
return (
84
84
< TooltipProviderContextProvider
85
85
scope = { __scopeTooltip }
86
- isOpenDelayed = { isOpenDelayed }
86
+ isOpenDelayedRef = { isOpenDelayedRef }
87
87
delayDuration = { delayDuration }
88
88
onOpen = { React . useCallback ( ( ) => {
89
89
window . clearTimeout ( skipDelayTimerRef . current ) ;
90
- setIsOpenDelayed ( false ) ;
90
+ isOpenDelayedRef . current = false ;
91
91
} , [ ] ) }
92
92
onClose = { React . useCallback ( ( ) => {
93
93
window . clearTimeout ( skipDelayTimerRef . current ) ;
94
94
skipDelayTimerRef . current = window . setTimeout (
95
- ( ) => setIsOpenDelayed ( true ) ,
95
+ ( ) => ( isOpenDelayedRef . current = true ) ,
96
96
skipDelayDuration
97
97
) ;
98
98
} , [ skipDelayDuration ] ) }
@@ -229,9 +229,9 @@ const Tooltip: React.FC<TooltipProps> = (props: ScopedProps<TooltipProps>) => {
229
229
trigger = { trigger }
230
230
onTriggerChange = { setTrigger }
231
231
onTriggerEnter = { React . useCallback ( ( ) => {
232
- if ( providerContext . isOpenDelayed ) handleDelayedOpen ( ) ;
232
+ if ( providerContext . isOpenDelayedRef . current ) handleDelayedOpen ( ) ;
233
233
else handleOpen ( ) ;
234
- } , [ providerContext . isOpenDelayed , handleDelayedOpen , handleOpen ] ) }
234
+ } , [ providerContext . isOpenDelayedRef , handleDelayedOpen , handleOpen ] ) }
235
235
onTriggerLeave = { React . useCallback ( ( ) => {
236
236
if ( disableHoverableContent ) {
237
237
handleClose ( ) ;
0 commit comments