Moderne Front-End-Frameworks basieren alle auf dem Komponentenkonzept, das es uns ermöglicht, unsere Anliegen zu trennen und Front-End-Projekte besser zu entwickeln und zu warten. Normalerweise bilden übergeordnete und untergeordnete Komponenten jedoch auch die Hierarchie von DOM-Elementen ab. Was passiert, wenn Sie eine Komponente über DOM-Knoten hinweg bereitstellen müssen?
In React können wir Portaldies verwenden, was in manchen Fällen sehr nützlich ist. Beispielsweise muss ich anhand eines Status die Position bestimmen, an der die aktuelle untergeordnete Komponente gemountet ist. Im Allgemeinen gibt es Dialogfelder, Vollbildanzeige usw.
Hier ist ein benutzerdefinierter Hook zum Implementieren dieser Funktion:
Hier erstelle ich einen divals Betriebsknoten des Portals und ändere seine Mount-Position, wenn sich die containerÄnderung ändert. Beachten Sie, dass die in meinem letzten Artikel vorgestellten portalRefFunktionen tatsächlich optimiert werden können :useImmutableRefValue
Es sieht also so aus:
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;
Vielen Dank fürs Lesen, bis zum nächsten Mal, vielen Dank.
Kein Medium-Mitglied? Unterstützen Sie mich hier, indem Sie einer werden .
Weitere Inhalte unter PlainEnglish.io .
Melden Sie sich für unseren kostenlosen wöchentlichen Newsletter an . Folgen Sie uns auf Twitter , LinkedIn , YouTube und Discord .
Sind Sie daran interessiert, Ihr Software-Startup zu skalieren ? Schauen Sie sich Circuit an .
Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.
Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.
Von Alyson Lee, geschäftsführende Beraterin für Regierungsangelegenheiten Der jährliche Bewilligungsprozess der Bundesregierung ist von zentraler Bedeutung für unsere Bemühungen zur Finanzierung der Kohlendioxidentfernung (CDR). Jedes Jahr reicht Carbon180 Anfragen an verschiedene Kongressbüros ein, um zu bestimmen, wohin die Dollars im nächsten Jahr fließen werden.
Letzte Woche fiel mir eine Pressemitteilung auf, die über PressGazette (eine britische Nachrichten-Website für Medien) verschickt wurde. In dem Artikel wurde angekündigt, dass Acast, das skandinavische Podcast-Hosting- und Werbeunternehmen, ein Konsortium der „wahrscheinlich einflussreichsten“ Verlage im Podcasting leiten werde.
Es fällt uns oft schwer, das umzusetzen, von dem wir wissen, dass es gut für uns ist. Von der Aussage, dass wir einen Lebensgefährten lieben, bis hin zur Erinnerung daran, wie ein Pirat zu reden – es wird immer diejenigen geben, die behaupten, dass ein Tag, eine Woche oder ein Monat voller Ereignisse nicht nötig sei, weil sie diese Dinge bereits tun.
Wie oft haben Sie ohne nachzudenken eine Plastikflasche, ein Glas, eine Aluminiumdose oder ein Öko-Energiepaket weggeworfen? Wie oft haben Sie sich gewünscht, dass Sie für das Recycling etwas zurückbekommen könnten? Wenn Sie wie die meisten Menschen sind, lautet die Antwort wahrscheinlich „vielfach“. Recycling wird oft als Ärger, lästige Pflicht oder Pflicht angesehen, die keinen unmittelbaren oder greifbaren Nutzen bringt.