Funktionskomponente des Reaktionsportals
 
Eine erstklassige Methode, Kinder in einen DOM-Knoten zu rendern, der ausserhalb der DOM-Hierarchie der Elternkomponente liegt, bieten Portale. In diesem Artikel erfahren Sie, wie Sie die funktionalen Komponenten des Portals von ReactJS verwenden.
Funktionale Komponente des React-Portals in ReactJS
Im Wesentlichen montieren wir unser App-Element über unserem Root-Element. Die Verwendung eines div-Elements mit der id-Wurzel als primäres DOM-Element ist praktisch Standard geworden.
Jede React-Komponente in unserer Anwendung ist unter dem Element root zu finden, das sich innerhalb eines Satzes befindet, wenn Sie sich den DOM-Baum des Browsers ansehen. Trotzdem erlauben uns React Portals, diesen DOM-Baum zu verlassen und eine Komponente auf einen DOM-Knoten zu rendern, der nicht unter diesem root-Element liegt.
Dies verstößt gegen eine Eltern-Kind-Hierarchie und erfordert, dass eine Komponente als neues Element präsentiert wird.
Syntax:
ReactDOM.createPortal(child, container)
- Das erste Argument ist ein Kind, das alles Renderbare sein kann, wie z. B. ein Element, ein String oder ein Fragment (Kind).
- Der containerist ein DOM-Element und das zweite Argument.
Die untergeordneten Komponenten müssen den übergeordneten Container visuell verlassen. Unten wird einer der häufigsten Anwendungsfälle des Portals gezeigt.
- Dialogfelder mit Modalen
- Hovercards
- Schwebende Menüs
- QuickInfos
- Lader
Beachten Sie bei der Verwendung von Reaktionsportalen Folgendes. Wenn Sie niemanden kennenlernen, sind diese Tendenzen nicht sofort erkennbar.
- Unabhängig davon, wo sich der Portal-Knotenim DOM befindet, funktioniert das Event-Bubbling wie vorgesehen, indem es Events an die Vorgänger des React-Baums weiterleitet.
- React steuert immer noch den Lebenszyklus von untergeordneten Elementen, wenn sie über Portale gerendert werden.
- Der React-Komponentenbaum wird vom Portal nicht beeinflusst, das nur die HTML-DOM-Struktur ändert.
- Bei der Verwendung von Portalen müssen Sie als Einhängepunkt für die Portalkomponente ein HTML DOM elementangeben.
Lassen Sie uns das folgende Beispiel verwenden, um die erwähnte Idee zu verstehen.
Code:
const PortalModal = ({message, isModalOpen, onClose}) => {
  if (!isModalOpen) return null;
  return ReactDOM.createPortal(
     <div className='modal'>
      <p>{message}</p>
      <button onClick={onClose}>X</button>
     </div>
    ,document.body);
  }
function Component() {
  const [modalOpen, setModalOpen] = useState(false)
  return (
    <div>
      <button onClick={() => setModalOpen(true)}>Open Modal</button>
      <PortalModal
  message = 'Hello DelftStack Readers!'
       isModalOpen={modalOpen}
       onClose={
    () => setModalOpen(false)}
      />
    </div>
  )
}
Wir haben das Portal für das Modal im obigen Beispiel erstellt. Das Modal öffnet sich und erscheint außerhalb des root-Elements, sobald der Benutzer auf die Schaltfläche klickt.
Die Dimensionen dieses Modals würden von den übergeordneten Komponenten nicht geerbt oder geändert, da es außerhalb der Stammhierarchie gerendert wird.
Ausgang:

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn