Inhaltsverzeichnis
Zweitens: Zustand und unveränderliche Objekte
三:除了以上方法修改react组件的状态之外,我们还经常会用到replaceState改变组件的状态
Heim Web-Frontend Front-End-Fragen und Antworten Welche Methoden gibt es, um auf Zustandsänderungen zu reagieren?

Welche Methoden gibt es, um auf Zustandsänderungen zu reagieren?

Jan 06, 2023 am 09:18 AM
react state

Die Möglichkeiten, den Status in React zu ändern, sind: 1. Ändern Sie den Status über die Methode „this.setState({title:‘React‘});“ :preState .quantity+1)“-Methode zum Ändern des Status; 3. Ändern Sie den Status der Komponente über die „replaceState“-Methode.

Welche Methoden gibt es, um auf Zustandsänderungen zu reagieren?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Reaktionsversion 18.0.0, Dell G3-Computer.

Welche Methoden gibt es, um den Zustand in React zu ändern?

Den Zustand in React richtig ändern

Zuerst können wir in React den Zustand direkt über this.state.{property} abrufen , aber wenn wir den Status ändern möchten, gibt es viele Fallstricke. Die folgenden sind drei häufige Fallen:

Sie können den Status nicht direkt ändern.

Die Komponente ändert den Status direkt und löst das Rendern nicht erneut aus. Beispiel:

this.state.title='React';
Nach dem Login kopieren

Die richtige Änderungsmethode lautet:

this.setState({title:'React'});
Nach dem Login kopieren
Die Zustandsaktualisierung erfolgt asynchron

Wenn setState aufgerufen wird, ändert sich der Komponentenstatus nicht sofort, aber der zu ändernde Status wird in die Ereigniswarteschlange gestellt und React optimiert den tatsächlichen Ausführungszeitpunkt und aus eigenen Leistungsgründen können mehrere setState-Statusänderungen zu einer Statusänderung zusammengeführt werden. Verlassen Sie sich daher nicht auf den aktuellen Status, um den nächsten Status zu berechnen, denn wenn die Statusänderung tatsächlich durchgeführt wird, kann manchmal nicht garantiert werden, dass der abhängige this.state der neueste Status ist, da die Reaktion selbst dann mehrere Status zu einem zusammenführt Dies ist immer noch der alte Status, sodass Sie sich bei der Berechnung des nächsten Status nicht auf die aktuellen Requisiten verlassen können, da die Aktualisierung der Requisiten ebenfalls asynchron erfolgt. Beispiel: In den häufig verwendeten Reaktionsbeispielen gibt es eine Operation, bei der auf das Pluszeichen geklickt wird, um den Wert um eins zu erhöhen. Wenn Sie einmal auf + klicken, wird die Zahl um 1 erhöht. Wenn Sie zweimal hintereinander klicken, wird dies der Fall sein immer noch um 1 erhöhen. Dies ist, wenn die Reaktion zusammengeführt und auf einmal geändert wird, was der Ausführung des folgenden Codes entspricht:

Object.assign(
previousState,
{quantity:this.state.quantity+1},
{quantity:this.state.quantity+1},
)
Nach dem Login kopieren

Dann wird die vorherige Operation überschrieben und der Endwert wird nur um 1 erhöht. Sie können eine andere Funktion als Parameter verwenden: setState. Der erste Parameter ist diesmal der Zustand der Komponente vor der Änderung.

Der richtige Weg zum Ändern ist:

this.setState((preState, props)=>counter:preState.quantity+1)
Nach dem Login kopieren
Statusaktualisierung ist ein Zusammenführungsprozess

Wenn Sie ssetState aufrufen, um den Status einer Komponente zu ändern, muss nur der geänderte Status übergeben werden, nicht der vollständige Status. weil die Komponente Die Aktualisierung des Status ist ein Zusammenführungsprozess. Der Status einer Komponente lautet beispielsweise:

this.state={

title:'React',

content:'React is an wondeful JS library'

}
Nach dem Login kopieren

Hinweis: Wenn Sie nur den Titel ändern müssen, übergeben Sie den geänderten Titel an setState:

this.setState({title:'ReactJs'});
Nach dem Login kopieren

react den neuesten zusammenführen Der Titel wird in seinen ursprünglichen Zustand zurückversetzt, während der Inhalt des ursprünglichen Zustands beibehalten wird:

this.state={
title:'ReactJs,
content:''React is an wondeful Js library
}
Nach dem Login kopieren

Zweitens: Zustand und unveränderliche Objekte

React behandelt den Zustand offiziell als unveränderliches Objekt Einerseits werden this.state und die Komponenten nicht neu gerendert, andererseits sollten alle im Status enthaltenen Status unveränderliche Objekte sein neu erstellt werden, anstatt den ursprünglichen Status direkt zu ändern. Wie kann dann ein neuer Status erstellt werden? Wir können ihn je nach Statustyp in die folgenden drei Situationen unterteilen:

ein unveränderlicher Typ (Zahl, Zeichenfolge, Bool, Bulle, undefiniert)

Diese Situation ist die einfachste, da der Status ein unveränderlicher Typ ist, sodass Sie dem zu ändernden Status direkt einen neuen Wert zuweisen können. Wie unten gezeigt, Die Anzahl, die wir ändern möchten, ist vom Typ Nummer, Titel (Zeichenfolge), Erfolg (bool). Drei Zustände:

this.setState({
count:1,
title:'React',
success:true
})
Nach dem Login kopieren

Der Zustandstyp ist Array.

Wenn es einen Array-Typ gibt, Zustandsbücher, wenn Sie Wenn Sie ein Buch zu Büchern hinzufügen möchten, können Sie die Concat-Methode des Arrays oder die ES6-Erweiterungssyntax (Aread-Syntax) verwenden
Methode eins: Verwenden Sie preState, concat, um ein neues Array zu erstellen

 this.setState((preState)=>books:preState.books.concat(['React Guide']))
Nach dem Login kopieren

Methode zwei: ES6-Spread-Syntax

this.setState(preState=>books:[...preState,''React Guide])
Nach dem Login kopieren

Wenn wir einige Elemente aus Büchern als neuen Zustand abfangen, können Sie die Slice-Methode des Arrays verwenden:

this.setState(preState=>books:preState.books.slice(1,3))
Nach dem Login kopieren

Wenn wir einige Elemente aus Büchern als neuen Zustand filtern, Sie Sie können die Filtermethode verwenden:

 this.setState(preState => {
        books: preState.books.filter(item => {

        return item != 'React';

        })
    })
Nach dem Login kopieren

Hinweis: Verwenden Sie nicht Push, Pop, Shift. Die Unshift- und Splice-Methoden ändern den Status des Array-Typs, da diese Methoden das ursprüngliche Array ändern, während Concat, Slice und Der Filter gibt ein neues Array zurück. ??
this.setState(preState=>{
owner:{...preState.owner,name:'Jason'}
})
Nach dem Login kopieren

 

总结:

创建新的状态的关键是,避免使用会直接修改原对象的方法而是使用可以返回一个新对象的方法,当然可以使用Immutable的JS库(Immutable.js)实现类似的效果。

 

思考:

为什么React推荐组件状态的修改时不可变对象呢?

  1. 不可变对象的修改会返回一个新的对象,不用担心原对象在不小心的情况下修改导致的错误,方便程序的管理和调试
  2. 处于性能的考虑,对象组件的状态是不可变对象时,在组件的shouldComponentUpdate方法中仅需要比较前后两次状态对象的引用就可以判断状态是否真的改变,从而避免不必要的render调用

三:除了以上方法修改react组件的状态之外,我们还经常会用到replaceState改变组件的状态

 

replaceState()方法与setState()类似,但是方法只会保留nextState中状态,原state不在nextState中的状态都会被删除。使用语法:

replaceState(object nextState,[, function callback])
Nach dem Login kopieren

nextState,将要设置的新状态,该状态会替换当前的state。

callback,可选参数,回调函数。该函数会在replaceState设置成功,且组件重新渲染后调用。

如:

 class App extends React.Component{

     constructor(props);

      this.state={

      count:1

      title:'数字计算'

      }

}

handleClick=()=>{

  this.replaceState({

    count:this.state.count+1

  })

}

render(){
    return(
      <button onClick={this.onClick}>点我</button>
      )
  }

}
Nach dem Login kopieren

 

结果为:

 

{
count:1
}
Nach dem Login kopieren
推荐学习:《react视频教程

Das obige ist der detaillierte Inhalt vonWelche Methoden gibt es, um auf Zustandsänderungen zu reagieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket Sep 26, 2023 pm 07:46 PM

So erstellen Sie eine Echtzeit-Chat-Anwendung mit React und WebSocket Einführung: Mit der rasanten Entwicklung des Internets hat die Echtzeitkommunikation immer mehr Aufmerksamkeit auf sich gezogen. Live-Chat-Apps sind aus dem modernen Sozial- und Arbeitsleben nicht mehr wegzudenken. In diesem Artikel wird erläutert, wie Sie mit React und WebSocket eine einfache Echtzeit-Chat-Anwendung erstellen, und es werden spezifische Codebeispiele bereitgestellt. 1. Technische Vorbereitung Bevor wir mit der Erstellung einer Echtzeit-Chat-Anwendung beginnen, müssen wir die folgenden Technologien und Tools vorbereiten: React: eine zum Erstellen

Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Sep 28, 2023 am 10:48 AM

React-Leitfaden zur Front-End- und Back-End-Trennung: So erreichen Sie die Front-End- und Back-End-Entkopplung und die unabhängige Bereitstellung. Es sind spezifische Codebeispiele erforderlich. In der heutigen Webentwicklungsumgebung ist die Front-End- und Back-End-Trennung zu einem Trend geworden. Durch die Trennung von Front-End- und Back-End-Code kann die Entwicklungsarbeit flexibler und effizienter gestaltet und die Zusammenarbeit im Team erleichtert werden. In diesem Artikel wird erläutert, wie Sie mithilfe von React eine Front-End- und Back-End-Trennung erreichen und so die Ziele der Entkopplung und unabhängigen Bereitstellung erreichen. Zuerst müssen wir verstehen, was Front-End- und Back-End-Trennung ist. Im traditionellen Webentwicklungsmodell sind Front-End und Back-End gekoppelt

So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask Sep 27, 2023 am 11:09 AM

So erstellen Sie mit React und Flask einfache und benutzerfreundliche Webanwendungen. Einführung: Mit der Entwicklung des Internets werden die Anforderungen an Webanwendungen immer vielfältiger und komplexer. Um den Anforderungen der Benutzer an Benutzerfreundlichkeit und Leistung gerecht zu werden, wird es immer wichtiger, moderne Technologie-Stacks zum Aufbau von Netzwerkanwendungen zu verwenden. React und Flask sind zwei sehr beliebte Frameworks für die Front-End- und Back-End-Entwicklung, und sie arbeiten gut zusammen, um einfache und benutzerfreundliche Webanwendungen zu erstellen. In diesem Artikel erfahren Sie, wie Sie React und Flask nutzen

So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ Sep 28, 2023 pm 08:24 PM

So erstellen Sie eine zuverlässige Messaging-Anwendung mit React und RabbitMQ Einführung: Moderne Anwendungen müssen zuverlässiges Messaging unterstützen, um Funktionen wie Echtzeitaktualisierungen und Datensynchronisierung zu erreichen. React ist eine beliebte JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen, während RabbitMQ eine zuverlässige Messaging-Middleware ist. In diesem Artikel wird erläutert, wie Sie React und RabbitMQ kombinieren, um eine zuverlässige Messaging-Anwendung zu erstellen, und es werden spezifische Codebeispiele bereitgestellt. RabbitMQ-Übersicht:

Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte Sep 26, 2023 am 11:34 AM

React Responsive Design Guide: So erzielen Sie adaptive Front-End-Layouteffekte Mit der Beliebtheit mobiler Geräte und der steigenden Nachfrage der Benutzer nach Multi-Screen-Erlebnissen ist Responsive Design zu einem der wichtigsten Aspekte in der modernen Front-End-Entwicklung geworden. React, eines der derzeit beliebtesten Frontend-Frameworks, bietet eine Fülle von Tools und Komponenten, die Entwicklern dabei helfen, adaptive Layouteffekte zu erzielen. In diesem Artikel werden einige Richtlinien und Tipps zur Implementierung von responsivem Design mit React vorgestellt und spezifische Codebeispiele als Referenz bereitgestellt. Fle mit React

Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell Sep 26, 2023 pm 02:25 PM

React-Code-Debugging-Leitfaden: So finden und beheben Sie Front-End-Fehler schnell. Einführung: Bei der Entwicklung von React-Anwendungen stoßen Sie häufig auf eine Vielzahl von Fehlern, die zum Absturz der Anwendung oder zu fehlerhaftem Verhalten führen können. Daher ist die Beherrschung von Debugging-Fähigkeiten eine wesentliche Fähigkeit für jeden React-Entwickler. In diesem Artikel werden einige praktische Techniken zum Auffinden und Beheben von Front-End-Fehlern vorgestellt und spezifische Codebeispiele bereitgestellt, um Lesern dabei zu helfen, Fehler in React-Anwendungen schnell zu finden und zu beheben. 1. Auswahl der Debugging-Tools: In Re

React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Sep 29, 2023 pm 05:45 PM

ReactRouter-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Mit der Popularität von Single-Page-Anwendungen ist das Front-End-Routing zu einem wichtigen Bestandteil geworden, der nicht ignoriert werden kann. Als beliebteste Routing-Bibliothek im React-Ökosystem bietet ReactRouter umfangreiche Funktionen und benutzerfreundliche APIs, wodurch die Implementierung des Front-End-Routings sehr einfach und flexibel ist. In diesem Artikel wird die Verwendung von ReactRouter vorgestellt und einige spezifische Codebeispiele bereitgestellt. Um ReactRouter zuerst zu installieren, benötigen wir

So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery Sep 26, 2023 pm 06:12 PM

So verwenden Sie React und Google BigQuery zum Erstellen schneller Datenanalyseanwendungen. Einführung: Im heutigen Zeitalter der Informationsexplosion ist die Datenanalyse zu einem unverzichtbaren Bindeglied in verschiedenen Branchen geworden. Unter anderem ist die Entwicklung schneller und effizienter Datenanalyseanwendungen für viele Unternehmen und Einzelpersonen zum Ziel geworden. In diesem Artikel wird erläutert, wie Sie mit React und Google BigQuery eine schnelle Datenanalyseanwendung erstellen, und es werden detaillierte Codebeispiele bereitgestellt. 1. Übersicht React ist ein Werkzeug zum Erstellen

See all articles