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 .
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.
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.
„Będzie mnie chronił, gdy będę w niebezpieczeństwie. Ukryje mnie w swoim namiocie.
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.
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.
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ę.