From 3acb0fbeb68e66794b023d5385d18d6a88ce7221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AC=A2?= Date: Mon, 8 Sep 2025 15:19:06 +0800 Subject: [PATCH 1/2] refactor: Upgrade utils and replace useMergedState --- package.json | 2 +- src/BaseSelect/index.tsx | 7 ++----- src/Select.tsx | 11 +++-------- 3 files changed, 6 insertions(+), 14 deletions(-) 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..2bb96db4e 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,7 @@ const Select = React.forwardRef search || '', - }); + const [mergedSearchValue, setSearchValue] = useControlledState('', searchValue); // =========================== Option =========================== const parsedOptions = useOptions( @@ -343,9 +340,7 @@ const Select = React.forwardRef { From 079671004be958b89599e2181e2de8206501939f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AC=A2?= Date: Mon, 8 Sep 2025 16:56:44 +0800 Subject: [PATCH 2/2] feat: set default value "" --- src/Select.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Select.tsx b/src/Select.tsx index 2bb96db4e..b9e2e557c 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -272,7 +272,8 @@ const Select = React.forwardRef