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 vorläufige Studie zum Vue-Unit-Testing

Inhaltsverzeichnis Vorwort Warum Unit-Tests einfü...

So verwenden Sie das Marquee-Tag im XHTML-Code

Im Forum habe ich gesehen, dass der Internetnutzer...

So lösen Sie das Problem ERROR 2003 (HY000) beim Starten von MySQL

1. Problembeschreibung Beim Starten von MySQL tri...

Implementierungscode der HTML-Floating-Promptbox-Funktion

Allgemeine Formulareingabeaufforderungen belegen ...

CSS3 realisiert verschiedene grafische Effekte kleiner Pfeile

Es ist großartig, CSS zu verwenden, um verschiede...

Ausführliche Erklärung des Sperrmechanismus in MySQL InnoDB

Vorne geschrieben Eine Datenbank ist im Wesentlic...

Docker erstellt Python Flask+ Nginx+Uwsgi-Container

Installieren Sie Nginx Ziehen Sie zuerst das Cent...

Detaillierte Erklärung der Routenkonfiguration von Vue-Router

Inhaltsverzeichnis einführen Objektattribute in R...

So starten Sie mehrere MySQL-Datenbanken auf einem Linux-Host

Lassen Sie uns heute darüber sprechen, wie Sie vi...

Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Um die Lebensdauer der Festplatte zum Speichern v...

Zwei Verwendungen von iFrame-Tags in HTML

Ich habe kürzlich an einem Projekt gearbeitet – B...