Codeanalyse synchroner und asynchroner SetState-Probleme in React

Codeanalyse synchroner und asynchroner SetState-Probleme in React

React entstand als internes Projekt bei Facebook. Die Entstehung von React stellt eine revolutionäre Innovation dar. React ist ein subversives Front-End-Framework. React stellt es offiziell als eine deklarative, effiziente und flexible JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen vor. Obwohl die Hauptfunktion von React darin besteht, Benutzeroberflächen zu erstellen, hat das allmähliche Wachstum des Projekts React zu einer WebApp-Lösung gemacht, die sowohl das Front-End als auch das Back-End abdeckt.

Angular verwendet das Watcher-Objekt, Vue den Observer-Modus und React den Status. Sie haben jeweils ihre eigenen Eigenschaften. Es gibt kein Gut oder Böse, nur unterschiedliche Entscheidungen aufgrund unterschiedlicher Anforderungen.

Offizielle Website von React: https://reactjs.org/GitHub

Die Adresse lautet: https://github.com/facebook/react

1. In React sind von React gesteuerte Ereignisbehandlungsfunktionen wie onClick, onChange usw. und setState asynchron

importiere React, {Komponente} von „react“;

exportiere Standardklasse Input erweitert Komponente {
    Konstruktor(Requisiten) {
        super(Requisiten);    

        dieser.Zustand={
            Name: 'Hallo'
        }    
    }

    _onChange(e) {
        dies.setState({
            Name: „Welt“
        })

        console.log(dieser.Status.Name); //hallo
    }

  rendern () {
    zurückkehren (
      <div Klassenname='cp'>
        <Eingabeklassenname = 'cp-Eingabe' Wert = {this.state.name} bei Änderung = {this._onChange.bind(this)} Typ = "Text"/>                
      </div>
    );
  }
}

2. In nativen JS-Abhörereignissen wie addEventListener ist setState synchron

importiere React, {Komponente} von „react“;

exportiere Standardklasse Input erweitert Komponente {
    Konstruktor(Requisiten) {
        super(Requisiten);    

        dieser.Zustand={
            Name: 'Hallo'
        }    
    }

    _onChange(e) {
        // etwas tun
    }


    componentDidMount() {
        Geben Sie die Zeichenfolge ".cp-input" ein.
        input.addEventListener('klicken', ()=>{
            dies.setState({
                Name: „Welt“
            })

            console.log(dieser.Status.Name); //Welt
        })
    }

  rendern () {
    zurückkehren (
      <div Klassenname='cp'>
        <Eingabeklassenname = 'cp-Eingabe' Wert = {this.state.name} bei Änderung = {this._onChange.bind(this)} Typ = "Text"/>                
      </div>
    );
  }
}

3. In setTimeout ist setStatet synchron

importiere React, {Komponente} von „react“;

exportiere Standardklasse Input erweitert Komponente {
    Konstruktor(Requisiten) {
        super(Requisiten);    

        dieser.Zustand={
            Name: 'Hallo'
        }    
    }

    _onChange(e) {
        // etwas tun
    }


    componentDidMount() {
        setzeTimeout(()=>{
            dies.setState({
                Name: „Welt“
            })
            console.log(dieser.Status.Name); //Welt
        }, 1000)
    }

  rendern () {
    zurückkehren (
      <div Klassenname='cp'>
        <Eingabeklassenname = 'cp-Eingabe' Wert = {this.state.name} bei Änderung = {this._onChange.bind(this)} Typ = "Text"/>                
      </div>
    );
  }
}

Das Obige ist der detaillierte Inhalt der detaillierten Analyse des synchronen und asynchronen Codes von setState in React. Weitere Informationen zum synchronen und asynchronen setState von React finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Verständnis des synchronen oder asynchronen Problems von setState in React
  • Die Verwendung von setState in React und die Verwendung von synchron und asynchron
  • Verwendung von synchronen und asynchronen setState-Szenarien in React

<<:  MySQL-Anweisungsanordnung und zusammenfassende Einführung

>>:  So installieren und verwenden Sie Cockpit unter CentOS 8/RHEL 8

Artikel empfehlen

Eine Liste der Fallstricke beim regulären JS-Matching

Ich habe vor Kurzem eine Falle bei der regulären ...

So ändern Sie den Speicherort von Datendateien in CentOS6.7 mysql5.6.33

Problem: Die Partition, in der MySQL Datendateien...

mysql-8.0.16 winx64 neuestes Installationstutorial mit Bildern und Text

Ich habe erst vor Kurzem angefangen, mich mit Dat...

Vue implementiert die Funktionen Vergrößern, Verkleinern und Ziehen

In diesem Artikelbeispiel wird der spezifische Co...

So speichern Sie „false“ oder „true“ in MySQL

Boolescher MySQL-Wert, speichert „false“ oder „tr...

So verhindern Sie das Flashen von Vue in kleinen Projekten

Zusammenfassung HTML: Element plus V-Umhang CSS: ...

Detaillierte Erklärung zur Verwendung von MySQL Online DDL

Inhaltsverzeichnis Text LOCK-Parameter ALGORITHMU...

js realisiert den Lupeneffekt von Produkten auf Einkaufswebsites

In diesem Artikel wird der spezifische Code von j...

Implementieren der Prioritätswarteschlange in JavaScript

Inhaltsverzeichnis 1. Einführung in die Priorität...