A React összetevői ösztönzik a bevált gyakorlatokat, de túlságosan korlátozóak lehetnek. Tanulja meg a penész törését.
Kulcs elvitelek
- A React Portals lehetővé teszi, hogy egy összetevő tartalmát a szülőkomponens-hierarchián kívül jelenítse meg, ami hasznossá teszi az olyan felhasználói felületi elemekhez, mint a modálisok és a fedvények.
- A portálok különféle forgatókönyvekben használhatók, például modálokban, harmadik féltől származó integrációkban, helyi menükben és eszköztippekben, lehetővé téve a rugalmas megjelenítést a különböző DOM-helyeken.
- A React Portals használatával elválaszthatja a felhasználói felület problémáit a fő összetevőfától, javíthatja a kód karbantarthatóságát, és egyszerűen vezérelheti az összetevők z-indexét az UI-elemek rétegezéséhez és egymásra halmozásához.
A modern webes alkalmazásoknak olyan felületekre van szükségük, amelyek olyan elemeket tartalmaznak, mint a modálisok és az eszköztippek. Előfordulhat azonban, hogy ezek a felhasználói felület-összetevők nem mindig integrálhatók jól a meglévő komponensszerkezettel.
A React megoldást kínál erre a problémára a Portals nevű szolgáltatáson keresztül.
Mik azok a React portálok?
A React Portals módot biztosít az összetevő tartalmának a szülőkomponens-hierarchián kívüli megjelenítésére. Más szavakkal, lehetővé teszik, hogy egy komponens kimenetét egy másik DOM-elembe renderelje, amely nem az aktuális összetevő gyermeke.
Ez a funkció akkor hasznos, ha olyan felhasználói felület-összetevőkkel foglalkozik, amelyeket magasabb szinten kell renderelni a DOM-ban, például a modálisokat vagy az átfedéseket.
React portálok felhasználása
A React Portalok különféle forgatókönyvekben hasznosak:
- Modálok és átfedések. Ha modális párbeszédeket vagy átfedéseket kell megjelenítenie, jelenítse meg azokat a DOM legfelső szintjén. Ez biztosítja, hogy a szülők stílusa vagy elrendezése ne korlátozza őket.
- Harmadik féltől származó integrációk. Harmadik féltől származó könyvtárak integrálásakor, amelyek bizonyos DOM-helyeken várják a megjelenítést.
- Helyi menük. Helyi menük létrehozása, amelyek reagálnak a felhasználói interakciókra, amelyeket a nézetablakhoz vagy egy adott DOM-elemhez képest kell elhelyezni.
- Eszköztippek és előugró ablakok. Eszköztippek vagy előugró ablakok megjelenítésekor, amelyeknek a többi összetevő tetején kell megjelenniük, függetlenül az összetevőfán elfoglalt helyüktől.
Hogyan működnek a React portálok
Hagyományosan, amikor egy komponenst a Reactban renderel, a kimenetét a szülőkomponens DOM-csomópontjához csatolja. Ez a legtöbb forgatókönyvnél jól működik, de korlátozóvá válik, ha a szülő hierarchiáján kívül kell megjeleníteni a tartalmat.
Tegyük fel, hogy modális párbeszédet hoz létre. Alapértelmezés szerint a modális tartalmat a következőn belül helyezi el szülőkomponens DOM-csomópontja.
Ez stíluskonfliktusokhoz és más nem szándékos viselkedéshez vezethet, mivel a modális tartalom örökli szülőkomponenseinek stílusait és megszorításait.
A React Portals úgy kezeli ezt a korlátozást, hogy lehetővé teszi egy cél DOM-elem megadását, ahol az összetevő kimenetének meg kell jelennie.
Ez azt jelenti, hogy a szülő DOM-hierarchiáján kívül bármilyen UI-elemet megjeleníthet, megszabadítva a szülő stílusának és elrendezésének korlátaitól.
A React portálok használata
A modálok tökéletes példák arra, hogy mikor használhatjuk a React Portalokat. Ez a mintakód elmagyarázza az eljárást.
Alapvető React alkalmazás beállítása
Portál létrehozása előtt győződjön meg arról, hogy be van állítva egy alapvető React alkalmazás. Te tudod használni olyan eszközöket, mint a Create React App hogy gyorsan felállványozzon egy projektet.
Hozzon létre egy portált a modálokhoz
Portál létrehozásához használja a ReactDOM.createPortal() funkció. Két argumentumra van szükség: a megjeleníteni kívánt tartalomra és a DOM-csomópontra való hivatkozásra a megjelenítéshez.
Ebben a példában a Modal összetevő egy portál használatával jeleníti meg gyermekeit. A tartalom a DOM elemben „root” azonosítóval jelenik meg.
// Modal.js
import ReactDOM from"react-dom";const Modal = ({ children }) => {
const modalRoot = document.getElementById("root");
return ReactDOM.createPortal(children, modalRoot);
};
exportdefault Modal;
Meghatározhatja egy adott Modal tartalmát egy adott komponensben. Például ez a ModalContent komponens tartalmaz egy bekezdést és a Bezárás gomb:
// Create a Modal Content Component
const ModalContent = ({ onClose }) => ("modal">"modal-content">This is a modal content.</p>
exportdefault ModalContent;
Ezután megnyithatja a Modalt az App.js-ben meghatározott gombkattintással:
// Usage in App component
import { useState } from"react";
import Modal from"./Modal";
import ModalContent from"./ModalContent";
import"./App.css";const App = () => {
const [isModalOpen, setIsModalOpen] = useState(false);const toggleModal = () => {
setIsModalOpen(!isModalOpen);
};return (
exportdefault App;
Ebben a példában a Modal komponens egy portál használatával jeleníti meg a tartalmát, elválasztva a fő összetevő hierarchiától.
Valós példák
A React portálok különféle mindennapi helyzetekben hasznosak.
- Értesítési rendszer: Mikor értesítési rendszer létrehozása, gyakran azt szeretné, hogy az üzenetek a képernyő tetején jelenjenek meg, függetlenül attól, hogy hol van az aktuális összetevő.
- Helyi menü: A helyi menüknek a felhasználó kattintási helyének közelében kell megjelenniük, függetlenül attól, hogy az hol található a DOM-hierarchiában.
- Harmadik féltől származó integráció: A harmadik féltől származó könyvtáraknak gyakran meg kell célozniuk a DOM tetszőleges részeit.
A portálhasználat legjobb gyakorlatai
Ha a legtöbbet szeretné kihozni a React portálokból, kövesse az alábbi tippeket:
- Válassza ki a megfelelő eseteket: A portálok rugalmasak, de nem mindenre van szükségük. Használjon portálokat, ha a rendszeres renderelés problémákat vagy ütközéseket okoz.
- Tartsa külön a portál tartalmát: Amikor portálokon keresztül jelenít meg tartalmat, győződjön meg arról, hogy az önálló. Nem szabad a szülő stílusára vagy kontextusára támaszkodnia.
- Események és műveletek kezelése: A portálokon az események egy kicsit másképp működnek a leválasztott tartalom miatt. Kezelje megfelelően az események terjedését és a műveleteket.
A React portálok előnyei
A React portálok számos előnyt kínálnak, amelyek elősegíthetik az összetett felhasználói felületek fejlesztését. Ők:
- Segítsen elválasztani a felhasználói felület problémáit a fő összetevőfától, javítva a kód karbantarthatóságát és olvashatóságát.
- Rugalmasságot biztosít azokhoz az összetevőkhöz, amelyeknek a szülőkomponensen kívül kell megjelenniük.
- Könnyítse meg a kezelőfelület többi részétől elkülönülő modális és fedvények létrehozását.
- Könnyedén vezérelheti az összetevők z-indexét, így biztosítva a felhasználói felület elemeinek rendezett rétegzését és egymásra halmozását.
Lehetséges buktatók és megfontolások
Bár a React portálok hasznosak, tartsa szem előtt a következőket:
- CSS-problémák: A portálok váratlan CSS-stílusú viselkedést okozhatnak, mivel a tartalmat a szülőkomponenseken kívülre helyezik. Használjon globális stílusokat, vagy gondosan kezelje a CSS hatókörét.
- Kisegítő lehetőségek: Amikor portálokat használ tartalom megjelenítésére, ne felejtse el érintetlenül hagyni a kisegítő lehetőségeket, például a billentyűzet navigációját és a képernyőolvasó kompatibilitását.
- Szerveroldali megjelenítés: Előfordulhat, hogy a portálok nem illeszkednek jól szerveroldali renderelés (SSR). Ismerje meg a portálok használatának hatásait és korlátait az SSR-beállításokban.
Propelling UI Beyond the Norm
A React Portals hatékony megoldást kínál olyan bonyolult felhasználói felületi helyzetek kezelésére, amelyekben a tartalomnak a szülőkomponensek határain túl kell megjelennie.
A portálok megértésével és a bevált gyakorlatok alkalmazásával olyan felhasználói felületeket építhet, amelyek jobban alkalmazkodnak és könnyebben karbantarthatók, miközben elkerüli a problémákat.
Akár modálokat készít, akár harmadik féltől származó könyvtárakat visz be, a React Portals hatékony választ ad az igényes felhasználói felületi igények kielégítésére.