From 59870594c142cbde580ca8dc584d1d9d7e2760b4 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Thu, 17 Sep 2020 15:58:37 +0200 Subject: [PATCH] inline defaultState Otherwise we will be mutating the refs, and items from the first Menu on the page --- .../src/components/menu/menu.tsx | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/@headlessui-react/src/components/menu/menu.tsx b/packages/@headlessui-react/src/components/menu/menu.tsx index ef3b8a9..0862bf6 100644 --- a/packages/@headlessui-react/src/components/menu/menu.tsx +++ b/packages/@headlessui-react/src/components/menu/menu.tsx @@ -211,15 +211,6 @@ function useMenuContext(component: string) { return context } -const defaultState: StateDefinition = { - menuState: MenuStates.Closed, - buttonRef: React.createRef(), - itemsRef: React.createRef(), - items: [], - searchQuery: '', - activeItemIndex: null, -} - function stateReducer(state: StateDefinition, action: Actions) { return match(action.type, reducers, state, action) } @@ -234,7 +225,14 @@ export function Menu( props: Props ) { const d = useDisposables() - const reducerBag = React.useReducer(stateReducer, defaultState) + const reducerBag = React.useReducer(stateReducer, { + menuState: MenuStates.Closed, + buttonRef: React.createRef(), + itemsRef: React.createRef(), + items: [], + searchQuery: '', + activeItemIndex: null, + } as StateDefinition) const [{ menuState, itemsRef, buttonRef }, dispatch] = reducerBag React.useEffect(() => {