Skip to content

Commit 5e66f74

Browse files
author
刘欢
committed
refactor: Upgrade utils and replace useMergedState
1 parent c7f9880 commit 5e66f74

File tree

3 files changed

+21
-26
lines changed

3 files changed

+21
-26
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"dependencies": {
4747
"@rc-component/motion": "^1.1.4",
4848
"@rc-component/trigger": "^3.0.0",
49-
"@rc-component/util": "^1.0.0",
49+
"@rc-component/util": "^1.3.0",
5050
"classnames": "2.x",
5151
"rc-overflow": "^1.3.1"
5252
},

src/Menu.tsx

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import classNames from 'classnames';
22
import type { CSSMotionProps } from '@rc-component/motion';
33
import Overflow from 'rc-overflow';
4-
import useMergedState from '@rc-component/util/lib/hooks/useMergedState';
4+
import useControlledState from '@rc-component/util/lib/hooks/useControlledState';
55
import isEqual from '@rc-component/util/lib/isEqual';
66
import warning from '@rc-component/util/lib/warning';
77
import * as React from 'react';
@@ -273,10 +273,8 @@ const Menu = React.forwardRef<MenuRef, MenuProps>((props, ref) => {
273273
}
274274

275275
// ========================= Open =========================
276-
const [mergedOpenKeys, setMergedOpenKeys] = useMergedState(defaultOpenKeys, {
277-
value: openKeys,
278-
postState: keys => keys || EMPTY_LIST,
279-
});
276+
const [innerOpenKeys, setMergedOpenKeys] = useControlledState(defaultOpenKeys, openKeys);
277+
const mergedOpenKeys = innerOpenKeys || EMPTY_LIST;
280278

281279
// React 18 will merge mouse event which means we open key will not sync
282280
// ref: https://github.com/ant-design/ant-design/issues/38818
@@ -376,11 +374,9 @@ const Menu = React.forwardRef<MenuRef, MenuProps>((props, ref) => {
376374
}, [lastVisibleIndex, allVisible]);
377375

378376
// ======================== Active ========================
379-
const [mergedActiveKey, setMergedActiveKey] = useMergedState(
377+
const [mergedActiveKey, setMergedActiveKey] = useControlledState(
380378
activeKey || ((defaultActiveFirst && childList[0]?.key) as string),
381-
{
382-
value: activeKey,
383-
},
379+
activeKey,
384380
);
385381

386382
const onActive = useMemoCallback((key: string) => {
@@ -423,22 +419,21 @@ const Menu = React.forwardRef<MenuRef, MenuProps>((props, ref) => {
423419

424420
// ======================== Select ========================
425421
// >>>>> Select keys
426-
const [mergedSelectKeys, setMergedSelectKeys] = useMergedState(defaultSelectedKeys || [], {
427-
value: selectedKeys,
428-
429-
// Legacy convert key to array
430-
postState: keys => {
431-
if (Array.isArray(keys)) {
432-
return keys;
433-
}
422+
const [internalSelectKeys, setMergedSelectKeys] = useControlledState(
423+
defaultSelectedKeys || [],
424+
selectedKeys,
425+
);
426+
const mergedSelectKeys = React.useMemo(() => {
427+
if (Array.isArray(internalSelectKeys)) {
428+
return internalSelectKeys;
429+
}
434430

435-
if (keys === null || keys === undefined) {
436-
return EMPTY_LIST;
437-
}
431+
if (internalSelectKeys === null || internalSelectKeys === undefined) {
432+
return EMPTY_LIST;
433+
}
438434

439-
return [keys];
440-
},
441-
});
435+
return [internalSelectKeys];
436+
}, [internalSelectKeys]);
442437

443438
// >>>>> Trigger select
444439
const triggerSelection = (info: MenuInfo) => {

src/hooks/useUUID.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import * as React from 'react';
2-
import useMergedState from '@rc-component/util/lib/hooks/useMergedState';
2+
import useControlledState from '@rc-component/util/lib/hooks/useControlledState';
33

44
const uniquePrefix = Math.random().toFixed(5).toString().slice(2);
55

66
let internalId = 0;
77

88
export default function useUUID(id?: string) {
9-
const [uuid, setUUID] = useMergedState(id, { value: id });
9+
const [uuid, setUUID] = useControlledState(id, id);
1010

1111
React.useEffect(() => {
1212
internalId += 1;

0 commit comments

Comments
 (0)