Jak zrobić trwały portal w React

Montowanie komponentów na różnych poziomach DOM jest niesamowite

Zdjęcie Glenna Carstensa-Petersa na Unsplash

Wszystkie nowoczesne frameworki front-end mają koncepcję komponentów, co pozwala nam oddzielić nasze obawy i lepiej rozwijać i utrzymywać projekty front-end. Ale zwykle komponenty nadrzędne i podrzędne również odwzorowują hierarchię elementów DOM. Co zrobić, jeśli musisz zamontować komponent w węzłach DOM?

W React możemy Portalto osiągnąć, co w niektórych przypadkach jest bardzo przydatne. Na przykład muszę określić pozycję, w której bieżący komponent potomny jest montowany na podstawie pewnego stanu. Zwykle są to okna dialogowe, wyświetlanie na pełnym ekranie itp.

Oto niestandardowy hak do implementacji tej funkcji:

Tutaj tworzę divjako węzeł operacyjny portalu i modyfikuję jego pozycję montowania, gdy zmiany container. Zauważ, że portalReffaktycznie można zoptymalizować za pomocą useImmutableRefValuewprowadzonych w moim ostatnim artykule:

Wygląda to więc tak:

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;

Dzięki za przeczytanie, do zobaczenia w następnym, na zdrowie.

Nie jesteś członkiem Medium? Wesprzyj mnie tutaj, stając się jednym z nich .

Więcej treści na PlainEnglish.io .

Zapisz się do naszego bezpłatnego cotygodniowego biuletynu . Śledź nas na Twitterze , LinkedIn , YouTube i Discordzie .

Zainteresowany skalowaniem startupu oprogramowania ? Sprawdź obwód .

Suggested posts

Wyszukiwanie informacji o nazwach domen

Fragment książki Small, Sharp Software Tools autorstwa Briana P. Hogana

Wyszukiwanie informacji o nazwach domen

Kiedy wysyłasz żądanie do facebook.com, Twój komputer wyszukuje nazwę domeny, aby przetłumaczyć tę nazwę domeny na adres IP, aby komputer mógł nawiązać to połączenie.

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Wstęp Udar to nagły przypadek medyczny, który może dotknąć każdego w dowolnym momencie. Występuje, gdy przepływ krwi do części mózgu zostaje zakłócony, co prowadzi do nagłej utraty funkcji mózgu.

Related posts

Tworzenie bezpiecznego środowiska pracy

Tworzenie bezpiecznego środowiska pracy

„Będzie mnie chronił, gdy będę w niebezpieczeństwie. Ukryje mnie w swoim namiocie.

Powolna erozja: ujawnianie sposobów, w jakie ludzie marnują swoje kariery

Powolna erozja: ujawnianie sposobów, w jakie ludzie marnują swoje kariery

W dzisiejszym dynamicznym i konkurencyjnym świecie kariera odgrywa znaczącą rolę w rozwoju osobistym, stabilności finansowej i ogólnej satysfakcji z życia. Jednak wiele osób wpada w nieustający cykl stagnacji i niezadowolenia, stopniowo marnując swoje życie zawodowe.

Dlaczego niektórzy freelancerzy udają swoje życie

Dlaczego niektórzy freelancerzy udają swoje życie

Niedawno byłem na Linkedin, największej profesjonalnej sieci społecznościowej na świecie, i znalazłem posty obserwowanych przeze mnie niezależnych projektantów, którzy przykuli moją uwagę. Wszyscy zamieszczali zdjęcia z samolotów, na plaży z laptopami, z basenów i biur z niesamowitymi widokami.

Co możesz zrobić w swoim okresie oczekiwania (czekając na wylądowanie Twoja pierwsza praca w technologii)

Co możesz zrobić w swoim okresie oczekiwania (czekając na wylądowanie Twoja pierwsza praca w technologii)

Przejście do nowej kariery może być niezwykle trudne, jeśli spróbujesz zrobić to sam. Ważne jest, aby znaleźć odpowiedzialnych partnerów, którzy są na tym samym poziomie uczenia się co ty, którzy mają podobne cele, wytrwałość i motywację.