Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

157
Vistas
React modal context hook fails to open more than one modal

My context for displaying modals works perfectly when used to display a single modal. However, when I try open a modal on top of a modal, nothing happens. Setting a breakpoint in showDialog reveals that the function is triggered when opening the first modal, but not for successive modals as long as the first one remains open. I do not understand this behavior. Why does it not trigger?

type DialogComponent = (onClosed: () => void) => JSX.Element;

interface DialogState {
    showDialog: (dialog: DialogComponent) => void;
    clearDialogs: () => void;
}

const DialogContext = createContext<DialogState>({
    showDialog: (_dialog) => {},
    clearDialogs: () => {},
});

export const useDialog = () => useContext(DialogContext);

export const DialogProvider = ({ children }: PropsWithChildren<{}>) => {
    const [dialogs, setDialogs] = useState<Array<DialogComponent>>([]);

    const showDialog = (dialog: DialogComponent) => {
        setDialogs([dialog, ...dialogs]);
    };

    const closeDialog = (dialog: DialogComponent) =>
        setDialogs(dialogs.filter((d) => d !== dialog));

    return (
        <>
            {dialogs.map((dialog) => (
                <div key={UniqueId()}>{dialog(() => closeDialog(dialog))}</div>
            ))}

            <DialogContext.Provider
                value={{
                    showDialog,
                    clearDialogs: () => setDialogs([]),
                }}
            >
                {children}
            </DialogContext.Provider>
        </>
    );
};
about 4 years ago · Santiago Gelvez
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda