Como fazer um portal persistente em React

A montagem de componentes nos níveis de DOM é incrível

Foto de Glenn Carstens-Peters no Unsplash

Todos os frameworks front-end modernos possuem o conceito de componentes, o que nos permite separar nossas preocupações e desenvolver e manter melhor os projetos front-end. Mas geralmente, os componentes pai e filho também mapeiam a hierarquia dos elementos DOM. E se você precisar montar um componente em nós DOM?

No React, podemos usar Portalpara conseguir isso, o que é muito útil em alguns casos. Por exemplo, preciso determinar a posição em que o componente filho atual está montado com base em algum estado. Normalmente, existem caixas de diálogo, exibição em tela cheia, etc.

Aqui está um gancho personalizado para implementar esse recurso:

Aqui eu crio um divcomo o nodo de operação do Portal, e modifico sua posição de montagem quando o mesmo containermuda. Observe que portalRefpode realmente ser otimizado usando useImmutableRefValueo apresentado em meu último artigo:

Então fica assim:

import { createPortal } from 'react-dom';
import { useEffect, useCallback } from 'react';
import type { PropsWithChildren, RefObject, FC } from 'react';

import useImmutableRefValue from './useImmutableRefValue';

const usePersistPortal = (container?: HTMLElement | RefObject<HTMLElement>) => {
  const portal = useImmutableRefValue(() => document.createElement('div'));

  useEffect(() => {
    const root =
      container instanceof Element
        ? container
        : container?.current ?? document.body;

    root.appendChild(portal);
    return () => {
      root.removeChild(portal);
    };
  }, [container, portal]);

  const Portal: FC<PropsWithChildren<{}>> = useCallback(
    ({ children }) => createPortal(children, portal),
    [portal],
  );

  return {
    Portal,
  };
};

export default usePersistPortal;

Obrigado por ler, te vejo no próximo, abraços.

Não é um membro Médio? Apoie-me aqui, tornando-se um .

Mais conteúdo em PlainEnglish.io .

Assine nosso boletim informativo semanal gratuito . Siga-nos no Twitter , LinkedIn , YouTube e Discord .

Interessado em dimensionar sua inicialização de software ? Conheça o Circuito .

Suggested posts

Encontrar informações sobre nomes de domínio

Um trecho de Small, Sharp Software Tools por Brian P. Hogan

Encontrar informações sobre nomes de domínio

Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Introdução O AVC é uma emergência médica que pode atingir qualquer pessoa a qualquer momento. Ocorre quando o fluxo sanguíneo para uma parte do cérebro é interrompido, levando a uma perda repentina da função cerebral.

Related posts

O que você pode fazer em sua temporada de espera (esperando para conseguir seu primeiro emprego em tecnologia)

O que você pode fazer em sua temporada de espera (esperando para conseguir seu primeiro emprego em tecnologia)

Mudar para uma nova carreira pode ser extremamente desafiador se você tentar fazer isso sozinho. É importante encontrar parceiros de responsabilidade que estejam no mesmo nível de aprendizado que você, que compartilhem objetivos, tenacidade e motivação semelhantes.

"A Fossa das Marianas Revelada: Revelando as Terríveis Verdades Ocultas do Abismo"

"A Fossa das Marianas Revelada: Revelando as Terríveis Verdades Ocultas do Abismo"

Introdução:Bem-vindos, corajosos leitores, a uma jornada que nos levará às profundezas mais sombrias do nosso planeta. Neste blog, mergulhamos no mundo enigmático da Fossa das Marianas, revelando seus segredos ocultos e revelando as verdades arrepiantes que se escondem sob sua superfície.

That Threat Archive: Vol 7 Black Basta

That Threat Archive: Vol 7 Black Basta

No mundo interconectado de hoje, a ameaça de ataques cibernéticos é mais prevalente do que nunca. Criminosos cibernéticos e agentes de estado-nação estão constantemente buscando explorar vulnerabilidades e roubar dados valiosos, representando um risco significativo para organizações de todos os tamanhos.

Por que alguns freelancers estão fingindo suas vidas

Por que alguns freelancers estão fingindo suas vidas

Estive recentemente no Linkedin, a maior rede social profissional do mundo, e encontrei postagens de designers freelancers que sigo que me chamaram a atenção. Todos postaram fotos de aviões, na praia com seus laptops, de piscinas e escritórios com vistas incríveis.