diff --git a/package.json b/package.json index 20a15935c..3821024cb 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "dependencies": { "@rc-component/trigger": "^3.0.0", "@rc-component/motion": "^1.1.4", - "@rc-component/util": "^1.2.1", + "@rc-component/util": "^1.3.0", "classnames": "2.x", "rc-overflow": "^1.4.0", "rc-virtual-list": "^3.5.2" diff --git a/src/BaseSelect/index.tsx b/src/BaseSelect/index.tsx index cefee17c1..f2c6a9c1d 100644 --- a/src/BaseSelect/index.tsx +++ b/src/BaseSelect/index.tsx @@ -1,7 +1,7 @@ import type { AlignType, BuildInPlacements } from '@rc-component/trigger/lib/interface'; import cls 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 isMobile from '@rc-component/util/lib/isMobile'; import { useComposeRef } from '@rc-component/util/lib/ref'; import { getDOM } from '@rc-component/util/lib/Dom/findDOMNode'; @@ -383,10 +383,7 @@ const BaseSelect = React.forwardRef((props, ref) setRendered(true); }, []); - const [innerOpen, setInnerOpen] = useMergedState(false, { - defaultValue: defaultOpen, - value: open, - }); + const [innerOpen, setInnerOpen] = useControlledState(defaultOpen || false, open); let mergedOpen = rendered ? innerOpen : false; diff --git a/src/Select.tsx b/src/Select.tsx index 130f39877..b9e2e557c 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -29,7 +29,7 @@ * - `combobox` mode not support `optionLabelProp` */ -import useMergedState from '@rc-component/util/lib/hooks/useMergedState'; +import useControlledState from '@rc-component/util/lib/hooks/useControlledState'; import warning from '@rc-component/util/lib/warning'; import * as React from 'react'; import type { @@ -272,10 +272,8 @@ const Select = React.forwardRef search || '', - }); + const [internalSearchValue, setSearchValue] = useControlledState('', searchValue); + const mergedSearchValue = internalSearchValue || ''; // =========================== Option =========================== const parsedOptions = useOptions( @@ -343,9 +341,7 @@ const Select = React.forwardRef {