Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
How do I nest multiple React contexts of the same type

Say I want to create a modal and handle the state through Reacts Context API

export const ModalUIProvider: FC = ({ children }) => {
    const [isOpen, setIsOpen] = useState(false);

    const openModal = useCallback(() => setIsOpen(true), [setIsOpen]);

    const closeModal = useCallback(() => setIsOpen(false), [setIsOpen]);

    const toggleModal = useCallback(
        () => setIsOpen(!isOpen),
        [isOpen, setIsOpen]
    );

    const modalContext = useMemo(() => {
        return {
            isModalOpen: isOpen,
            openModal,
            closeModal,
            toggleModal,
        };
    }, [isOpen, openModal, closeModal, toggleModal]);

    return (
        <ModalContext.Provider value={modalContext}>
            {children}
        </ModalContext.Provider>
    );
};

export const useModal = () => {
    return useContext<IModalContext>(ModalContext);
};

<ModalUIProvider>
    <ParentModal />
</ModalUIProvider>

const { isModalOpen, openModal, closeModal } = useModal();

Now, within this modal I want to have a button, that upon being clicked opens another model ontop of the current one.

How can I do this, without interfering with the wrapping context?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda