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. Suchen Sie nach doppelten Zeilen Wählen Sie * ...
Inhaltsverzeichnis Ideen Hostkonfiguration Konfig...
Inhaltsverzeichnis Probleme mit der Ressourcenver...
Problembeschreibung Wie wir alle wissen, wird bei...
Das Anordnungslayout zum Ausrichten der beiden En...
Die neueste Verpackungsschachtel für Perfect Aloe...
Binäre MySQL-Installationsmethode Laden Sie mysql...
Inhaltsverzeichnis Ursache Grund Einführung in NP...
Wenn MySQL DDL-Operationen wie „Alter Table“ ausf...
Ich habe vor einiger Zeit ein Projekt entwickelt....
1. Vorteile der Vorkompilierung Wir haben alle di...
Webdesign und -entwicklung sind harte Arbeit, als...
Vorwort Das Linux-System wird durch den Systemdie...
Manchmal stoßen wir auf eine solche Anforderung, ...
MySQL ist das beliebteste relationale Datenbankma...