Wie definiert man komplexe Komponenten (Klassenkomponenten) und einfache Komponenten (Funktionskomponenten)?
Dies wirft die Frage auf: Was ist Staat? Beispielsweise habe ich heute die Prüfung nicht bestanden, weil meine Verfassung nicht gut war und sich meine Verfassung auf mein Verhalten ausgewirkt hat. Was wir hier verstehen müssen ist: Wessen Staat ist das? Der Status ist der Status des Komponenteninstanzobjekts, nicht der Komponentenklasse selbst, sondern der von dieser Klasse erstellten Instanz. (Klasse) Eines der drei Hauptattribute der Komponenteninstanz: StatusInhalt anzeigen Realisieren Sie eine Anforderung, indem Sie auf die Seite klicken, Hot / Cool-Schalter <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8" /> <meta http-equiv="X-UA-kompatibel" content="IE=edge" /> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0" /> <Titel>Reagieren</Titel> </Kopf> <Text> <div id="test"></div> <!-- Kernbibliothek importieren--> <script src="../js/react.development.js"></script> <!-- Erweiterungsbibliothek --> <script src="../js/react-dom.development.js"></script> <!-- Konvertieren Sie jsx in js --> <script src="../js/babel.min.js"></script> <Skripttyp="text/babel"> // 1. Erstellen Sie die Komponentenklasse Weather extends React.Component { /** * Welche Daten im Konstruktor empfangen werden können, hängt davon ab, welche Daten beim Aufruf von new übergeben werden. * New Weather wird nicht von uns, sondern von react betrieben. */ Konstruktor(Requisiten) { // Ich habe Props noch nicht gelernt, aber ich muss sie verwenden. Ich werde die offizielle Website imitieren, um // die Klassensyntax super(props); zu schreiben. // Im Konstruktor zeigt dies auf das Konstruktor-Instanzobjekt // Vor 16.8 ist der Status {} und nach 16.8 ist er null dieser.Zustand = { isHot: wahr, }; } rendern() { console.log("dies:", dies); return <h1>Es ist heute sehr heiß</h1>; } } // 2. Komponenten auf der Seite rendern ReactDOM.render(<Weather />, document.getElementById("test")); </Skript> </body> </html> Daten initialisieren <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8" /> <meta http-equiv="X-UA-kompatibel" content="IE=edge" /> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0" /> <Titel>Reagieren</Titel> </Kopf> <Text> <div id="test"></div> <!-- Kernbibliothek importieren--> <script src="../js/react.development.js"></script> <!-- Erweiterungsbibliothek --> <script src="../js/react-dom.development.js"></script> <!-- Konvertieren Sie jsx in js --> <script src="../js/babel.min.js"></script> <Skripttyp="text/babel"> // 1. Erstellen Sie die Komponentenklasse Weather extends React.Component { /** * Welche Daten im Konstruktor empfangen werden können, hängt davon ab, welche Daten beim Aufruf von new übergeben werden. * New Weather wird nicht von uns, sondern von react betrieben. */ Konstruktor(Requisiten) { // Ich habe Props noch nicht gelernt, aber ich muss sie verwenden. Ich werde die offizielle Website nachahmen, um sie zu schreiben, sonst funktioniert es nicht. // Klassensyntax super(props); // Im Konstruktor zeigt dies auf das Konstruktor-Instanzobjekt // Vor 16.8 ist der Status {} und nach 16.8 ist er null dieser.Zustand = { isHot: wahr, }; } // Status ist auf dem Wetter-Instanzobjekt render() { console.log("dies:", dies); return <h1>Das heutige Wetter ist sehr {this.state.isHot ? "hot" : "cool"}</h1>; } } // 2. Komponenten auf der Seite rendern ReactDOM.render(<Weather />, document.getElementById("test")); </Skript> </body> </html> Schreiben Sie als Nächstes das Klickereignis. Beachten Sie, dass wir zuerst eine Fehlerdemonstration durchführen. <Skripttyp="text/babel"> // 1. Erstellen Sie die Komponentenklasse Weather extends React.Component { /** * Welche Daten im Konstruktor empfangen werden können, hängt davon ab, welche Daten beim Aufruf von new übergeben werden. * New Weather wird nicht von uns, sondern von react betrieben. */ Konstruktor(Requisiten) { // Ich habe Props noch nicht gelernt, aber ich muss sie verwenden. Ich werde die offizielle Website imitieren, um // die Klassensyntax super(props); zu schreiben. // Im Konstruktor zeigt dies auf das Konstruktor-Instanzobjekt // Vor 16.8 ist der Status {} und nach 16.8 ist er null dieser.Zustand = { isHot: wahr, }; } // Status ist auf dem Wetter-Instanzobjekt render() { console.log("dies:", dies); zurückkehren ( <h1 beiKlick={demo()}> Das heutige Wetter ist {this.state.isHot ? "hot" : "cool"} </h1> ); } } Funktion demo() { console.log("Demo wird aufgerufen"); } // 2. Komponenten auf der Seite rendern ReactDOM.render(<Weather />, document.getElementById("test")); </Skript> Wenn ich das Klickereignis aufrufe, schreibe ich onClick={demo()} Wenn React die Rendermethode über die Instanz in „new Weather“ aufruft und Sie den Rückgabewert erhalten möchten, müssen Sie <h1 onClick={demo()}>Today's weather is very {this.state.isHot ? "热" : "凉"}</h1> ausführen. Wenn die Zuweisungsanweisung onClick ausgeführt wird , wird der Rückgabewert des Funktionsaufrufs demo() als Rückruf an onClick übergeben. Der Rückgabewert von demo() ist undifend, d. h. undifend wird als Rückruf an onClick übergeben. Dies ist ein falscher Ansatz, da das Hinzufügen von () nach demo zu einem Funktionsaufruf führt. **Wenn der Klick erfolgt, wird „Undifend“ aufgerufen und React übernimmt diesen Vorgang. Wenn „Undifend“ aufgerufen wird, gibt es keine weiteren Aktionen. Häufige Schreibfehler rendern() { console.log("dies:", dies); zurückkehren ( <h1 onClick='demo()'>Das heutige Wetter ist {this.state.isHot ? "hot" : "cool"}</h1> ); } rendern() { console.log("dies:", dies); zurückkehren ( <h1 onclick='demo'>Das heutige Wetter ist {this.state.isHot ? "hot" : "cool"}</h1> ); } Richtiges Schreiben <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8" /> <meta http-equiv="X-UA-kompatibel" content="IE=edge" /> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0" /> <Titel>Reagieren</Titel> </Kopf> <Text> <div id="test"></div> <!-- Kernbibliothek importieren--> <script src="../js/react.development.js"></script> <!-- Erweiterungsbibliothek --> <script src="../js/react-dom.development.js"></script> <!-- Konvertieren Sie jsx in js --> <script src="../js/babel.min.js"></script> <Skripttyp="text/babel"> // 1. Erstellen Sie die Komponentenklasse Weather extends React.Component { /** * Welche Daten im Konstruktor empfangen werden können, hängt davon ab, welche Daten beim Aufruf von new übergeben werden. * New Weather wird nicht von uns, sondern von react betrieben. */ Konstruktor(Requisiten) { // Ich habe Props noch nicht gelernt, aber ich muss sie verwenden. Ich werde die offizielle Website imitieren, um // die Klassensyntax super(props); zu schreiben. // Im Konstruktor zeigt dies auf das Konstruktor-Instanzobjekt // Vor 16.8 ist der Status {} und nach 16.8 ist er null dieser.Zustand = { isHot: wahr, }; } // Status ist auf dem Wetter-Instanzobjekt render() { console.log("dies:", dies); zurückkehren ( <h1 onClick={demo}> Das heutige Wetter ist {this.state.isHot ? "hot" : "cool"} </h1> ); } } Funktion demo() { console.log("Demo wird aufgerufen"); } // 2. Komponenten auf der Seite rendern ReactDOM.render(<Weather />, document.getElementById("test")); </Skript> </body> </html> Überarbeiten Die Daten wurden auf der obigen Seite gerendert und jetzt möchten wir die Daten auf der Seite ändern. Wenn Sie die Daten ändern möchten, müssen Sie zuerst isHot im Status abrufen. Sehen wir uns eine falsche Schreibweise an: Funktion demo() { console.log("Demo wird aufgerufen"); // Fehlerdemonstration const { isHot } = this.state; console.log("istHeiß", istHeiß); } Die Eingabeaufforderung lautet xxx of undefined (mit der Aufschrift „state“), was „Status von undefined“ bedeutet. Wenn xxx undefiniert ist, meldet undefined.state diesen Fehler. Das xxx bezieht sich hier darauf. Funktion demo() { // Fehlerdemonstration console.log("this", this); const { isHot } = dieser.Zustand; console.log("istHeiß", istHeiß); } Werfen wir einen Blick auf die Codestruktur und Kommentare Durch Drucken wird festgestellt, dass die Daten korrekt angezeigt werden können, wenn die benutzerdefinierte Funktion außerhalb der Klasse platziert wird, die Daten im Status jedoch nicht abgerufen/geändert werden können. Klasse Wetter erweitert React.Component { /** * Welche Daten im Konstruktor empfangen werden können, hängt davon ab, welche Daten beim Aufruf von new übergeben werden. * New Weather wird nicht von uns, sondern von react betrieben. */ Konstruktor(Requisiten) { // Ich habe Props noch nicht gelernt, aber ich muss sie verwenden. Ich werde die offizielle Website imitieren, um // die Klassensyntax super(props); zu schreiben. /** * Im Konstruktor zeigt dies auf das Konstruktor-Instanzobjekt. * Vor 16.8 ist der Status {} und nach 16.8 ist er null * Status befindet sich im Instanzobjekt von Wetter */ dieser.Zustand = { isHot: wahr, }; } // Wetter wechseln demo() { console.log("dies", dies); const { isHot } = dieser.Zustand; console.log("istHeiß", istHeiß); } // Rendern render() { console.log("dies:", dies); zurückkehren ( <h1 onClick={demo}> Das heutige Wetter ist {this.state.isHot ? "hot" : "cool"} </h1> ); } } Beachten Sie, dass eine Klasse kein Funktionskörper ist. Sie müssen daher keine Funktion schreiben Damit ist dieser Artikel mit einer kurzen Analyse des Zustandsverständnisses von React abgeschlossen. Weitere Informationen zum Zustandsverständnis von React finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
>>: Beispiel zur Erläuterung der Größe einer MySQL-Statistiktabelle
fragen: Ich habe den Hyperlink mit CSS formatiert...
Inhaltsverzeichnis 1. Schlaffunktion 2. setTimeou...
In diesem Artikel wird ein Nachrichtenfeld mit Sp...
Designprinzipien für die Open-Source-Datenbankarc...
1. Installieren Sie Howdy: Howdy-Projektadresse s...
Wir erfinden das Rad neu: Hier verwenden wir Neuv...
Dieser Artikel stellt vor, wie Sie IP-Adressdaten...
Ich habe vor Kurzem eine einfache Studie zur Date...
Dinge zu beachten 1. Zunächst müssen Sie im MySQL...
Inhaltsverzeichnis Vorwort 1. Warum treten domäne...
usemap ist ein Attribut des <img>-Tags, das ...
Inhaltsverzeichnis Voraussetzungen Effekt verwend...
Inhaltsverzeichnis 1. Voranalyse 1. Vorabanalyse ...
In diesem Artikel wird der spezifische Code zur V...
Das Ziel von Google mit Flutter bestand immer dar...