Heim > Web-Frontend > js-Tutorial > Warum aktualisiert „setState' den Status der React-Komponente nicht sofort?

Warum aktualisiert „setState' den Status der React-Komponente nicht sofort?

Patricia Arquette
Freigeben: 2024-12-20 18:10:19
Original
632 Leute haben es durchsucht

Why Doesn't `setState` Immediately Update React Component State?

Warum verändert der Aufruf der setState-Methode den Status nicht sofort?

In React ist die setState-Methode eine asynchrone Funktion, die zum Festlegen des Komponentenstatus verwendet wird. Dies bedeutet, dass der Status nicht sofort nach dem Aufruf von setState aktualisiert wird. Dies liegt daran, dass setState ein erneutes Rendern der Komponente auslöst, was ein teurer Vorgang sein kann. Um zu vermeiden, dass der Browser nicht mehr reagiert, werden setState-Aufrufe gestapelt und später ausgeführt.

Asynchrone Natur von setState

Laut der React-Dokumentation: „setState() mutiert this.state nicht sofort, aber erstellt einen ausstehenden Zustandsübergang. Daher kann der Zugriff auf this.state nach dem Aufruf von setState immer noch den vorhandenen Wert zurückgeben.

Batch-setState-Aufrufe

Zur Leistungsoptimierung können mehrere setState-Aufrufe gestapelt und in einem einzigen erneuten Rendern ausgeführt werden . Dies verhindert unnötiges erneutes Rendern und verbessert die Reaktionsfähigkeit der Benutzeroberfläche.

Verwenden eines Callbacks

Um auf den aktualisierten Statuswert nach setState zuzugreifen, können Sie eine Callback-Funktion als zweites Argument verwenden. Dieser Rückruf wird ausgeführt, nachdem der Status aktualisiert wurde:

setState({ key: value }, () => {
    console.log('updated state value', this.state.key)
});
Nach dem Login kopieren

Beispiel

Betrachten Sie das folgende Beispiel:

class NightlifeTypes extends React.Component {
   handleOnChange = (event) => {
      let value = event.target.checked;

      if(event.target.className == "barClubLounge") {
         this.setState({ barClubLounge: value}, () => { 
             console.log(value);
             console.log(this.state.barClubLounge);
             //both will print same value
         });        
      }
   }
}
Nach dem Login kopieren

In diesem Beispiel wird die Funktion handleOnChange festgelegt die Eigenschaft „barClubLounge state“ zum Wertargument. Die Rückruffunktion im setState-Aufruf stellt sicher, dass in den Konsolenprotokollen der aktualisierte Statuswert angezeigt wird.

Das obige ist der detaillierte Inhalt vonWarum aktualisiert „setState' den Status der React-Komponente nicht sofort?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage