Befanden Sie sich jemals in einer Situation, in der Sie Daten in eine Komponente übertragen mussten, die tief in Ihrer React-App vergraben ist? Sie haben diese wichtige Information auf einer hohen Ebene, aber Ihre Komponente befindet sich weit unten in der Struktur, und jetzt müssen Sie Requisiten durch eine Reihe von Ebenen leiten, nur um sie dorthin zu bringen. Das nennen wir „Propellerbohrung“.
Sie beginnen damit, dass Sie die Informationen als Requisite von der übergeordneten Komponente an ihr direktes untergeordnetes Element senden. Dann gibt dieses Kind dieselben Informationen an sein eigenes Kind weiter und so weiter, Schicht für Schicht, bis die Nachricht schließlich die Komponente erreicht, die sie tatsächlich benötigt.
Wenn Sie es also mit vielen Stützen zu tun haben, die sich durch Ihren Komponentenbaum bewegen, und das Gefühl haben, dass es etwas übertrieben ist, haben Sie es wahrscheinlich mit Stützenbohrungen zu tun. Lassen Sie uns untersuchen, was es ist und warum es sich lohnen könnte, nach alternativen Möglichkeiten für den Umgang mit Ihren Daten zu suchen.
Prop-Drilling, manchmal auch „Threading-Requisiten“ oder „Komponentenverkettung“ genannt, ist die Methode, Daten von einer übergeordneten Komponente mithilfe von Requisiten durch eine Reihe verschachtelter untergeordneter Komponenten zu leiten.
Dies geschieht, wenn Sie eine Requisite durch mehrere Komponentenebenen senden müssen, um sie zu einer tief verschachtelten untergeordneten Komponente zu bringen, die sie benötigt. Jede Zwischenkomponente in der Kette muss die Requisite weiterleiten, auch wenn sie diese nicht direkt verwendet.
Stellen Sie sich vor, ein Lehrer muss dem letzten Schüler in einer langen Reihe von Schreibtischen eine wichtige Information mitteilen. Anstatt die Nachricht direkt zu übermitteln, übergibt der Lehrer sie dem ersten Schüler. Dieser Schüler gibt sie dann an den nächsten weiter und so weiter, wobei jeder Schüler in der Reihe die Nachricht an den nächsten weiterleitet, bis sie schließlich den letzten Schüler erreicht. In diesem Szenario fungiert jeder Student als Vermittler und stellt sicher, dass die Informationen von der Quelle bis zum Endempfänger gelangen. Dieser Prozess spiegelt das Prop-Drilling in der Programmierung wider, bei dem Daten durch mehrere Schichten von Komponenten weitergegeben werden, bevor sie diejenige erreichen, die sie tatsächlich benötigt.
Sehen wir uns das in einem Codebeispiel an:
// Parent Component (Teacher) function Teacher() { const messageToLastStudent = "Helo, Last Student!"; return (); } // Child Component (First Student) function FirstStudent({ message }) { // The message is passed directly as prop, without be used here. return ( ); } // Grandson Component (Last Student) function LastStudent({ message }) { return {message}
; // Here the message is finally used. }
Prop Drilling ist sehr praktisch, wenn der Komponentenbaum Ihrer App klein und einfach ist. Es ist einfach, Daten von einem übergeordneten Element an einige verschachtelte untergeordnete Elemente zu übergeben. Wenn Ihre App jedoch wächst, können einige Probleme auftreten:
Komplexitätscode: Prop-Bohrungen können die Komplexität und zusätzliche Boilerplate erhöhen, insbesondere in großen Komponentenbäumen. Je mehr Komponenten verschachtelt werden, desto schwieriger wird es, den Überblick über den Prop-Flow zu behalten, und die Codebasis kann unübersichtlich werden.
Auswirkungen auf die Leistung: Die Weitergabe von Daten an mehrere Ebenen von Komponenten kann sich negativ auf die Leistung auswirken, insbesondere wenn Sie mit großen Datenmengen arbeiten. Dies liegt daran, dass jede Komponente in der Kette erneut gerendert werden muss, wenn sich die Eigenschaften ändern, was zu unnötigem Neu-Rendering führen kann.
Aber es ist noch nicht alles verloren! Wir verfügen über effiziente Möglichkeiten, das Bohren von Propellern zu vermeiden und die Anwendungsleistung aufrechtzuerhalten:
Kontext-API: Die Kontext-API in React hilft, Prop-Drilling zu vermeiden, indem sie es Ihnen ermöglicht, Daten direkt über Komponenten hinweg zu teilen, ohne Props durch jede Ebene des Komponentenbaums zu leiten. Durch die Verwendung von React.createContext und Context.Provider können Sie Daten für jede Komponente innerhalb des Anbieters verfügbar machen, sodass keine Requisiten über mehrere Ebenen weitergegeben werden müssen. Dies vereinfacht die Datenverwaltung und reduziert die Komplexität Ihrer Komponentenhierarchie.
Staatsverwaltungsbibliotheken:
Zustandsverwaltungsbibliotheken tragen dazu bei, Prop Drilling zu vermeiden, indem sie einen zentralen Speicher für Anwendungsdaten bereitstellen. Bibliotheken wie Redux, MobX und Zustand verwalten den globalen Zustand und ermöglichen Komponenten den Zugriff auf und die Aktualisierung von Daten, ohne dass Requisiten jede Ebene durchlaufen müssen. Beispielsweise verwendet Redux ein globales Store-and-Connect- oder useSelector-Hooks, um Komponenten mit dem Status zu verbinden, was den Datenzugriff vereinfacht und die Notwendigkeit einer tiefgreifenden Übergabe von Requisiten reduziert.
Komponenten höherer Ordnung (HOCs):
Higher-Order Components (HOCs) tragen dazu bei, Prop Drilling zu vermeiden, indem sie Komponenten mit zusätzlichen Funktionen und Daten umhüllen. Ein HOC nimmt eine Komponente und gibt eine neue mit eingefügten Requisiten oder verbessertem Verhalten zurück. Dadurch können Sie Daten oder Features für tief verschachtelte Komponenten bereitstellen, ohne Requisiten durch jede Ebene zu leiten. Beispielsweise kann ein HOC eine Komponente umschließen, um sie mit Benutzerauthentifizierungsdaten zu versorgen, wodurch der Datenzugriff optimiert und die Weitergabe von Requisiten reduziert wird.
Kurz gesagt: Prop-Drilling kann eine schnelle Lösung für die Weiterleitung von Daten durch einige Schichten von Komponenten sein, kann aber schnell zu einem Durcheinander führen, wenn Ihre App wächst. Während es für kleinere Apps gut funktioniert, kann es bei größeren Projekten zu überladenem Code und Wartungsproblemen führen. Glücklicherweise gibt es Tools wie die Kontext-API, Zustandsverwaltungsbibliotheken und Komponenten höherer Ordnung, die Ihnen helfen, der Prop-Drilling-Falle zu entgehen und Ihre Codebasis sauber und verwaltbar zu halten. Wenn Sie also das nächste Mal mit Requisiten zu tun haben, denken Sie über diese Alternativen nach, damit alles reibungslos läuft!
Lasst uns die Zukunft gestalten! ?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3