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
Überspringen Sie die Docker-Installationsschritte...
In diesem Artikel wird der spezifische JavaScript...
Fehlermeldung: Der Job für mysqld.service ist feh...
Zeichenfolgenfunktionen Überprüfen Sie den ASCII-...
Shtml und asp sind ähnlich. In Dateien mit dem Nam...
<br />Durch die Frame-Struktur ist die gleic...
/****************** * Erweiterter Zeichengerätetr...
In diesem Artikel wird der spezifische Code von V...
Wie oben gezeigt ist die Navigation oben fixiert ...
SQL-Anweisung DROP-TRIGGER WENN EXISTIERT sys_men...
Problembeschreibung Die MySQL-Startfehlermeldung ...
Dies ist ein Effekt, der ausschließlich mit CSS e...
Einfache Funktion: Klicken Sie auf das Plug-In-Sy...
Vorwort: Bei der Verwendung von MySQL können Prob...
Inhaltsverzeichnis Methode 1: Rufen Sie die Funkt...