Проблема в вашем случае заключается в том, что вы визуализируете компонент Trigger
непосредственно в компоненте приложения, который будет повторно визуализироваться при изменении значения содержимого или состояния редуктора, и из-за этого некоторые другие ваши логические средства обрабатывают открытое состояние портала. не удается, что приводит к закрытию вашего портала. Рендеринг вашего компонента, как показано ниже, работает
const App = ({ children }) => {
const [state, dispatch] = useReducer(reducer, { foo: "bar" });
const appContextValue = useMemo(
() => ({
...state,
dispatch
}),
[state.foo]
);
return (
<AppContext.Provider value={appContextValue}>
{children}
</AppContext.Provider>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(
<App>
<Trigger overlay={<Overlay />}>
<div>trigger</div>
</Trigger>
</App>,
rootElement
);
Рабочая демоверсия