Reagieren Sie mit HooksVorwortIn den letzten drei Jahren meiner Arbeit habe ich Klassen zum Schreiben funktionaler Front-End-Seiten verwendet. Tatsächlich habe ich mich seit einiger Zeit mit Hooks beschäftigt. Das erste Mal kam ich damit in Berührung, als ich einen Kurs über Electron+React-Projekte ansah. Damals habe ich mich hauptsächlich mit Elektronen beschäftigt und den Hooks daher keine besondere Aufmerksamkeit geschenkt. Vielleicht liegt es auch an meiner langjährigen Vertrautheit mit Klassen und dass ich damals eine gewisse Abneigung gegen den funktionalen Schreibstil von Hooks hatte. Aufgrund der positiven Bewertungen von Hooks in der Branche wollte ich Hooks einmal verwenden, um ein Projekt zu starten. Aufgrund des damaligen Projektzyklus und des vorhandenen Technologie-Stacks hatte ich jedoch nie die Gelegenheit, dies in die Praxis umzusetzen. Weil ich in letzter Zeit React Hooks+Ts für neue Projekte verwendet habe. Also müssen wir anfangen, Hooks zu verwenden. Tatsächlich ist es, was die funktionale Entwicklung angeht, nicht falsch, andere einfach zu kopieren. Da es jedoch kein systematisches und tiefgreifendes Verständnis von Hooks gibt, ist in vielen Fällen nicht klar, warum sie auf diese Weise verwendet werden sollen. Deshalb habe ich kürzlich „Grundprinzipien und Praxis von React Hooks“ zum Lernen gefunden. Überprüfen Sie die Verwendung von Hooks und warum sie auf der Verwendungs- und Begründungsebene verwendet werden sollten. Es wird weiter über die Vorteile des funktionalen Schreibens nachgedacht. Tatsächlich habe ich bis zu einem gewissen Grad nur an der Oberfläche gekratzt. Hier halte ich lediglich fest, was ich in dieser Zeit gelernt habe. Warum Hooks?Ein großes Highlight von Hooks ist, dass die Geschäftslogik wiederverwendet werden kann. Besonders deutlich wird dies bei Haken. Wenn Sie beispielsweise Änderungen der Fenstergröße in einer normalen Klasse überwachen möchten, müssen Sie nach dem Mounten ein Überwachungsereignis in die Komponente einfügen. Wenn diese Funktion zur Überwachung der Fenstergröße jedoch an einer anderen Stelle benötigt wird, kann dieser Logikcode nicht wiederverwendet und nur in dieser Komponente neu geschrieben werden. In Hooks können wir diesen Teil des Überwachungslogikcodes jedoch im Hook-Modus kapseln und eine vollständige logische Wiederverwendung erreichen. Für den Unterricht
Für FunktionEiner der Kernpunkte von React besteht darin, eine Bindung von Statusdaten zur Ansichtsebene zu realisieren. Die Verwendung von Funktionen ist tatsächlich eine bessere Möglichkeit, das Zuordnungsproblem vom Status zur Ansicht zu lösen. Die Verwendung von Funktionen als Träger von React führt jedoch zu zwei Problemen: der Zustandserhaltung in der Funktion und den Lebenszyklusmethoden .
Abbildung: Ein Ausführungsprozess (Execution), wie beispielsweise die Funktionskomponente selbst, kann an den herkömmlichen Status oder die URL oder sogar die Größe des Fensters gebunden (eingebunden) werden. Auf diese Weise wird eine Funktion erneut ausgeführt, um aktualisierte Ergebnisse zu erzeugen, wenn sich der Status, die URL oder die Fenstergröße ändert. Klassen vs. Hooks
//High-Level-Komponenten in der Klasse implementieren die Wiederverwendung der Größenänderungsmethode //1. Deklaration von High-Level-Komponenten const withWindowSize = Component => { // Erzeuge eine WrappedComponent-Komponente auf hoher Ebene, die nur die Logik zur Überwachung der Fenstergröße enthält. class WrappedComponent extends React.PureComponent { Konstruktor(Requisiten) { super(Requisiten); dieser.Zustand = { Größe: this.getSize() }; } componentDidMount() { window.addEventListener("Größe ändern", this.handleResize); } componentWillUnmount() { window.removeEventListener("Größe ändern", this.handleResize); } Größe abrufen() { Gibt window.innerWidth > 1000 zurück? „groß“: „klein“; } handleResize = () => { const aktuelleSize = this.getSize(); dies.setState({ Größe: this.getSize() }); } rendern() { // Übergeben Sie die Fenstergröße an die eigentliche Geschäftslogikkomponente. return <Component size={this.state.size} />; } } WrappedComponent zurückgeben; }; //2. Komponente MyComponent verwendet die Größenänderungsfunktion in der übergeordneten Komponentenklasse MyComponent extends React.Component{ rendern() { const { Größe } = diese.Requisiten; wenn (Größe === "klein") return <Kleine Komponente />; sonst returniere <LargeComponent />; } } //Verwenden Sie withWindowSize, um eine übergeordnete Komponente zu generieren, die das Größenattribut generiert und es an die eigentliche Geschäftskomponente weitergibt. Exportieren Sie standardmäßig withWindowSize(MyComponent);
//Hooks verwendet die Hooks-Methode, um die Größenänderungslogik wiederzuverwenden //Definiere den useWindowSize-Hook const getSize = () => { Gibt window.innerWidth > 1000 zurück? „groß“: „klein“; } const useWindowSize = () => { const [Größe, Größe festlegen] = useState(Größe abrufen()); useEffect(() => { const handler = () => { Größe festlegen(Größe abrufen()) }; window.addEventListener('Größe ändern', Handler); zurückgeben () => { window.removeEventListener('Größe ändern', Handler); }; }, []); Rückgabegröße; }; //Verwenden Sie diesen Hook in der Funktionskomponente const Demo = () => { const Größe = useWindowSize(); wenn (Größe === "klein") return <Kleine Komponente />; sonst returniere <LargeComponent />; };
Hooks können den Code für dieselbe Geschäftslogik so weit wie möglich aggregieren. In der Klassenkomponente muss derselbe Geschäftslogikcode auf verschiedene Lebenszyklusmethoden der Klassenkomponente verteilt werden. Abbildung: Die linke Seite ist die Klassenkomponente und die rechte Seite ist die mit Hooks kombinierte Funktionskomponente. Blau und Gelb stehen für unterschiedliche Geschäftsfunktionen Wie speichern Hooks den Komponentenstatus und nutzen den Lebenszyklus? React bietet insgesamt 10 1. useState: Erlaubt Funktionen, den Status beizubehaltenEin Grundsatz, den wir befolgen sollten, ist, dass der Status niemals Werte speichern sollte, die berechnet werden können, zum Beispiel:
2. useEffect: Nebeneffekte ausführen Ein Nebeneffekt ist ein Codeteil, der keinen Einfluss auf das Ergebnis der aktuellen Ausführung hat. Wenn Sie beispielsweise eine Variable außerhalb einer Funktion ändern möchten, müssen Sie eine Anfrage initiieren. Format: Bei der Verwendung von useEffect sind folgende Punkte zu beachten: Wenn keine Abhängigkeiten bestehen, wird es nach jedem Rendern erneut ausgeführt Effekt verwenden(()=>{ console.log('re-render') //Jedes Mal ausführen, wenn das Rendern abgeschlossen ist})
Effekt verwenden(()=>{ console.log('did mount') //entspricht componentDidMount },[])
const [Größe,Größenänderung] = useState({}) Effekt verwenden(()=>{ const handler = () => { setResize() } window.addEventListener('Größe ändern',Handler) Rückkehr ()=>{ window.removeEventListener('Größe ändern',Handler) } },[]) Zusammenfassen
Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: So erstellen Sie DockerHub selbst
>>: MySQL-Datenoperation – Verwendung von DML-Anweisungen
In MySQL gibt es überall Caches. Wenn ich den Que...
<br />Einige Webseiten sehen nicht groß aus,...
Centos7 verwendet Yum, um MySQL zu installieren u...
1. Installieren Sie Oracle. Im Internet gibt es z...
1. Übersicht Beim täglichen Betrieb und bei der W...
Inhaltsverzeichnis 1. Standort / Matching 2. Stan...
Was ist k3d? k3d ist ein kleines Programm zum Aus...
In diesem Artikel wird der spezifische Code von j...
<br /> Hinweis: Alle Texte, mit Ausnahme der...
Dieser Artikel zeichnet das Installations-Grafik-...
Inhaltsverzeichnis 1. Effektanzeige 2. Verbessert...
1. Überprüfen Sie den Firewall-Status Überprüfen ...
vue-cli verwendet stimulsoft.reports.js (Tutorial...
In diesem Artikel wird der spezifische Code von R...