Skip to content

Commit fe3d7b5

Browse files
committed
fix read from ref in render
1 parent e88adfa commit fe3d7b5

File tree

1 file changed

+9
-6
lines changed
  • packages/@react-spectrum/menu/src

1 file changed

+9
-6
lines changed

packages/@react-spectrum/menu/src/Menu.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,15 @@ export const Menu = React.forwardRef(function Menu<T extends object>(props: Spec
5454
let {styleProps} = useStyleProps(completeProps);
5555
useSyncRef(contextProps, domRef);
5656
let [leftOffset, setLeftOffset] = useState({left: 0});
57-
let [prevPopoverContainer, setPrevPopoverContainer] = useState<HTMLElement | null>(null);
58-
if (popoverContainer && prevPopoverContainer !== popoverContainer && leftOffset.left === 0) {
59-
let {left} = popoverContainer.getBoundingClientRect();
60-
setLeftOffset({left: -1 * left});
61-
setPrevPopoverContainer(popoverContainer);
62-
}
57+
let prevPopoverContainer = useRef<HTMLElement | null>(null);
58+
59+
useLayoutEffect(() => {
60+
if (popoverContainer && prevPopoverContainer.current !== popoverContainer && leftOffset.left === 0) {
61+
prevPopoverContainer.current = popoverContainer;
62+
let {left} = popoverContainer.getBoundingClientRect();
63+
setLeftOffset({left: -1 * left});
64+
}
65+
}, [leftOffset]);
6366

6467
let menuLevel = contextProps.submenuLevel ?? -1;
6568
let nextMenuLevelKey = rootMenuTriggerState?.expandedKeysStack[menuLevel + 1];

0 commit comments

Comments
 (0)