1. setState() Beschreibung1.1 Daten aktualisierensetState() wird verwendet, um Daten asynchron zu aktualisieren Sie können setState() mehrmals aufrufen und es wird nur einmal ein erneutes Rendering ausgelöst. React von „react“ importieren ReactDOM von „react-dom“ importieren Klasse Opp erweitert React.Component { Zustand = { Anzahl: 1, } handleKlick = () => { // Daten asynchron aktualisieren this.setState({ Anzahl: dieser.Zustand.Anzahl + 1, }) dies.setState({ Anzahl: dieser.Zustand.Anzahl + 1, }) console.log(dieser.Zustand.Anzahl) // 1 } rendern() { zurückkehren ( <div> <h1>Zähler: {this.state.count}</h1> <button onClick={this.handleClick}>+1</button> </div> ) } } ReactDOM.render(<Opp />, document.getElementById('root')) 1.2 Empfohlene SyntaxVerwenden Sie die Syntax setState((state, props)=>{})
React von „react“ importieren ReactDOM von „react-dom“ importieren Klasse Opp erweitert React.Component { Zustand = { Anzahl: 1, } handleKlick = () => { /* // Daten asynchron aktualisieren this.setState({ Anzahl: dieser.Zustand.Anzahl + 1, }) konsole.log(dieser.zustand.anzahl) //1 dies.setState({ Anzahl: dieser.Zustand.Anzahl + 1, }) konsole.log(dieser.zustand.anzahl) //1 */ // Empfohlene Syntax this.setState((state, props) => { zurückkehren { Anzahl: Status.Anzahl + 1, } }) this.setState((Zustand, Eigenschaften) => { console.log('Zweiter Aufruf:', Status) //2 zurückkehren { Anzahl: Status.Anzahl + 1, } }) console.log(dieser.Zustand.Anzahl) // 3 } rendern() { zurückkehren ( <div> <h1>Zähler: {this.state.count}</h1> <button onClick={this.handleClick}>+1</button> </div> ) } } ReactDOM.render(<Opp />, document.getElementById('root')) 1.3 Zweiter Parameter
React von „react“ importieren ReactDOM von „react-dom“ importieren Klasse Opp erweitert React.Component { Zustand = { Anzahl: 1, } handleKlick = () => { dies.setState( (Zustand, Eigenschaften) => { zurückkehren { Anzahl: Status.Anzahl + 1, } }, // Sofort ausführen, nachdem der Status aktualisiert und neu gerendert wurde () => { console.log('Statusaktualisierung abgeschlossen:', this.state.count) // 2 console.log(document.getElementById('title').innerText) // Zähler: 2 document.title = 'Aktualisierte Anzahl ist:' + this.state.count } ) konsole.log(dieser.zustand.anzahl) //1 } rendern() { zurückkehren ( <div> <h1 id='title'>Zähler: {this.state.count}</h1> <button onClick={this.handleClick}>+1</button> </div> ) } } ReactDOM.render(<Opp />, document.getElementById('root')) 2. JSX-Syntaxkonvertierungsprozess
React von „react“ importieren ReactDOM von „react-dom“ importieren //Konvertierungsprozess der JSX-Syntax// const element = <h1 className='greeting'>Hallo JSX</h1> const-Element = React.createElement( 'h1', { Klassenname: "Begrüßung", }, „Hallo JSX“ ) console.log(Element) ReactDOM.render(Element, Dokument.getElementById('root')) 3. Komponentenaktualisierungsmechanismus
4. Optimierung der Komponentenleistung4.1 Reduzierender Zustand
4.2 Unnötiges erneutes Rendern vermeiden
React von „react“ importieren ReactDOM von „react-dom“ importieren Klasse Opp erweitert React.Component { Zustand = { Anzahl: 0, } handleKlick = () => { this.setState((Zustand) => { zurückkehren { Anzahl: dieser.Zustand.Anzahl + 1, } }) } //Hook-Funktion shouldComponentUpdate(nextProps, nextState) { // Gibt „false“ zurück, um ein erneutes Rendern der Komponente zu verhindern. // Gibt „false“ zurück. // Der neuste Status console.log('latest state', nextState) // Status vor der Aktualisierung console.log(this.state) //Gibt „true“ zurück, die Komponente wird erneut gerendert. Gibt „true“ zurück. } rendern() { console.log('Komponente aktualisiert') zurückkehren ( <div> <h1>Zähler: {this.state.count}</h1> <button onClick={this.handleClick}>+1</button> </div> ) } } ReactDOM.render(<Opp />, document.getElementById('root')) Beispiel: Zufallszahlen Über nextState React von „react“ importieren ReactDOM von „react-dom“ importieren // Zufallszahlen generieren Klasse Opp erweitert React.Component { Zustand = { Nummer: 0, } handleKlick = () => { this.setState((Zustand) => { zurückkehren { Zahl: Math.floor(Math.random() * 3), } }) } // Die zweimal generierten Zufallszahlen können gleich sein, daher ist ein erneutes Rendern nicht erforderlich shouldComponentUpdate(nextState) { console.log('Neuester Status:', nextState, 'Aktueller Status:', this.state) returniere nächsteZustandnummer !== dieseZustandnummer /* wenn (nächsterZustand.Nummer !== dieser.Zustand.Nummer) { returniere wahr } returniere false*/ } rendern() { console.log('rendern') zurückkehren ( <div> <h1>Zufallszahl: {this.state.number}</h1> <button onClick={this.handleClick}>Regenerieren</button> </div> ) } } ReactDOM.render(<Opp />, document.getElementById('root')) Über nextState React von „react“ importieren ReactDOM von „react-dom“ importieren // Zufallszahlen generieren Klasse Opp erweitert React.Component { Zustand = { Nummer: 0, } handleKlick = () => { this.setState((Zustand) => { zurückkehren { Zahl: Math.floor(Math.random() * 3), } }) } rendern() { zurückkehren ( <div> <NumberBox-Nummer = {diese.Bundeslandnummer} /> <button onClick={this.handleClick}>Regenerieren</button> </div> ) } } Klasse NumberBox erweitert React.Component { sollteComponentUpdate(nextProps) { console.log('neueste Eigenschaften:', nächste Eigenschaften, 'aktuelle Eigenschaften:', diese Eigenschaften) gibt nächsteProps.Nummer zurück !== diese.Props.Nummer } rendern() { console.log('Unterkomponenten-Render') return <h1>Zufallszahl: {this.props.number}</h1> } } ReactDOM.render(<Opp />, document.getElementById('root')) ZusammenfassenDieser 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:
|
>>: Binäre Typoperationen in MySQL
Meistens werden Plug-Ins zum Hochladen von Dateie...
Die Maschinen in unserem LAN können auf das exter...
1: Nginx-Serverlösung, ändern Sie die .conf-Konfi...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Überblick 0. Grundlagen von Ja...
Nachdem der Container gestartet wurde Melden Sie ...
In diesem Artikel erfahren Sie die Lösung für das...
Inhaltsverzeichnis Experimentelle Umgebung Instal...
In horizontaler Richtung können Sie die Zeilenaus...
Inhaltsverzeichnis Vorwort Erstellungsschritte Er...
Inhaltsverzeichnis 1. Einführung in NFS-Ganesha 2...
Inhaltsverzeichnis 1. Union-Typ 2. Crossover-Typ ...
Betriebsumgebung: MAC Docker-Version: Docker vers...
1. Was ist ein Deadlock? Die offizielle Definitio...
Inhaltsverzeichnis Zusammenfassung Gesamtprozess ...