|
1 | 1 | import * as React from 'react'; |
2 | | -import { flushSync } from 'react-dom'; |
3 | 2 | import type { CSSMotionProps } from 'rc-motion'; |
4 | 3 | import classNames from 'classnames'; |
5 | 4 | import shallowEqual from 'shallowequal'; |
@@ -272,18 +271,13 @@ const Menu = React.forwardRef<MenuRef, MenuProps>((props, ref) => { |
272 | 271 | }); |
273 | 272 |
|
274 | 273 | const triggerOpenKeys = (keys: string[]) => { |
275 | | - // Prevent React18 auto batch since trigger openKeys on same time |
276 | | - // which makes mergedOpenKeys closure problem |
277 | | - flushSync(() => { |
278 | | - setMergedOpenKeys(keys); |
279 | | - }); |
| 274 | + setMergedOpenKeys(keys); |
280 | 275 | onOpenChange?.(keys); |
281 | 276 | }; |
282 | 277 |
|
283 | 278 | // >>>>> Cache & Reset open keys when inlineCollapsed changed |
284 | | - const [inlineCacheOpenKeys, setInlineCacheOpenKeys] = React.useState( |
285 | | - mergedOpenKeys, |
286 | | - ); |
| 279 | + const [inlineCacheOpenKeys, setInlineCacheOpenKeys] = |
| 280 | + React.useState(mergedOpenKeys); |
287 | 281 |
|
288 | 282 | const isInlineMode = mergedMode === 'inline'; |
289 | 283 |
|
@@ -335,9 +329,10 @@ const Menu = React.forwardRef<MenuRef, MenuProps>((props, ref) => { |
335 | 329 | [registerPath, unregisterPath], |
336 | 330 | ); |
337 | 331 |
|
338 | | - const pathUserContext = React.useMemo(() => ({ isSubPathKey }), [ |
339 | | - isSubPathKey, |
340 | | - ]); |
| 332 | + const pathUserContext = React.useMemo( |
| 333 | + () => ({ isSubPathKey }), |
| 334 | + [isSubPathKey], |
| 335 | + ); |
341 | 336 |
|
342 | 337 | React.useEffect(() => { |
343 | 338 | refreshOverflowKeys( |
|
0 commit comments