diff --git a/package.json b/package.json index 2b19424..b8be170 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "dependencies": { "@rc-component/portal": "^2.0.0", "@rc-component/trigger": "^3.0.0", - "@rc-component/util": "^1.2.1", + "@rc-component/util": "^1.3.0", "classnames": "^2.3.2" }, "devDependencies": { @@ -63,7 +63,8 @@ "rc-test": "^7.1.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "typescript": "^5.0.0" + "typescript": "^5.0.0", + "@types/minimatch": "^5.1.2" }, "peerDependencies": { "react": ">=16.9.0", diff --git a/src/Tour.tsx b/src/Tour.tsx index fd96306..32c66c2 100644 --- a/src/Tour.tsx +++ b/src/Tour.tsx @@ -6,6 +6,7 @@ import Trigger from '@rc-component/trigger'; import classNames from 'classnames'; import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; import useMergedState from '@rc-component/util/lib/hooks/useMergedState'; +import useControlledState from '@rc-component/util/lib/hooks/useControlledState'; import { useMemo } from 'react'; import { useClosable } from './hooks/useClosable'; import useTarget from './hooks/useTarget'; @@ -63,18 +64,16 @@ const Tour: React.FC = props => { const triggerRef = React.useRef(); - const [mergedCurrent, setMergedCurrent] = useMergedState(0, { - value: current, - defaultValue: defaultCurrent, - }); + const [mergedCurrent, setMergedCurrent] = useControlledState( + defaultCurrent || 0, + current, + ); - const [mergedOpen, setMergedOpen] = useMergedState(defaultOpen, { - value: open, - postState: origin => - mergedCurrent < 0 || mergedCurrent >= steps.length - ? false - : (origin ?? true), - }); + const [internalOpen, setMergedOpen] = useControlledState(defaultOpen, open); + const mergedOpen = + mergedCurrent < 0 || mergedCurrent >= steps.length + ? false + : (internalOpen ?? true); // Record if already rended in the DOM to avoid `findDOMNode` issue const [hasOpened, setHasOpened] = React.useState(mergedOpen); diff --git a/tsconfig.json b/tsconfig.json index 9de652d..44ef07e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,23 +8,11 @@ "skipLibCheck": true, "esModuleInterop": true, "paths": { - "@/*": [ - "src/*" - ], - "@@/*": [ - ".dumi/tmp/*" - ], - "@rc-component/tour": [ - "src/Tour.tsx" - ] + "@/*": ["src/*"], + "@@/*": [".dumi/tmp/*"], + "@rc-component/tour": ["src/Tour.tsx"] } }, - "include": [ - ".dumirc.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": [".dumirc.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +}