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
1. Installieren Sie MySQL: udo apt-get installier...
Inhaltsverzeichnis 1. Funktionssignatur 2. Funkti...
Apache: Virtuellen Host basierend auf Port erstel...
Ich habe das Tutorial auf W3school durchgearbeitet...
rm-Befehl Der Befehl rm wird von den meisten Benu...
<br />Dies ist ein Artikel, den ich vor lang...
Inhaltsverzeichnis Vorwort 1. API-Einführung 2. Ü...
In diesem Artikel wird der spezifische Code von n...
Inhaltsverzeichnis 1. Vorbereitung 2. Befehlszeil...
Datensicherung und Wiederherstellung Teil 2, wie ...
Installieren von MySQL 5.7 aus TAR.GZ auf Mac OS ...
Szenariosimulation: Das Betriebs- und Wartungsper...
Inhaltsverzeichnis Normale Belastung Lazy Loading...
Dieser Artikel verwendet Vue und fügt Mausklicker...
Ein Designsoldat fragte: „Kann ich nur reines Des...