@@ -6,6 +6,7 @@ import Trigger from '@rc-component/trigger';
6
6
import classNames from 'classnames' ;
7
7
import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect' ;
8
8
import useMergedState from '@rc-component/util/lib/hooks/useMergedState' ;
9
+ import useControlledState from '@rc-component/util/lib/hooks/useControlledState' ;
9
10
import { useMemo } from 'react' ;
10
11
import { useClosable } from './hooks/useClosable' ;
11
12
import useTarget from './hooks/useTarget' ;
@@ -63,18 +64,16 @@ const Tour: React.FC<TourProps> = props => {
63
64
64
65
const triggerRef = React . useRef < TriggerRef > ( ) ;
65
66
66
- const [ mergedCurrent , setMergedCurrent ] = useMergedState ( 0 , {
67
- value : current ,
68
- defaultValue : defaultCurrent ,
69
- } ) ;
67
+ const [ mergedCurrent , setMergedCurrent ] = useControlledState (
68
+ defaultCurrent || 0 ,
69
+ current ,
70
+ ) ;
70
71
71
- const [ mergedOpen , setMergedOpen ] = useMergedState ( defaultOpen , {
72
- value : open ,
73
- postState : origin =>
74
- mergedCurrent < 0 || mergedCurrent >= steps . length
75
- ? false
76
- : ( origin ?? true ) ,
77
- } ) ;
72
+ const [ internalOpen , setMergedOpen ] = useControlledState ( defaultOpen , open ) ;
73
+ const mergedOpen =
74
+ mergedCurrent < 0 || mergedCurrent >= steps . length
75
+ ? false
76
+ : ( internalOpen ?? true ) ;
78
77
79
78
// Record if already rended in the DOM to avoid `findDOMNode` issue
80
79
const [ hasOpened , setHasOpened ] = React . useState ( mergedOpen ) ;
0 commit comments