suchen
HeimWeb-FrontendFront-End-Fragen und AntwortenWelche Methoden gibt es, um auf Zustandsänderungen zu reagieren?

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';

Die richtige Änderungsmethode lautet:

this.setState({title:'React'});
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},
)

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)
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'

}

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

this.setState({title:'ReactJs'});

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
}

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
})

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']))

Methode zwei: ES6-Spread-Syntax

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

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))

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';

        })
    })

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'}
})

 

总结:

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

 

思考:

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

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

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

 

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

replaceState(object nextState,[, function callback])

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>点我</button>
      )
  }

}

 

结果为:

 

{
count:1
}
推荐学习:《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!

Stellungnahme
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
React: Die Kraft einer JavaScript -Bibliothek für die WebentwicklungReact: Die Kraft einer JavaScript -Bibliothek für die WebentwicklungApr 18, 2025 am 12:25 AM

React ist eine von Meta entwickelte JavaScript -Bibliothek zum Erstellen von Benutzeroberflächen, wobei der Kern die Komponentenentwicklung und die virtuelle Dom -Technologie ist. 1. Komponenten und Staatsmanagement: React verwaltet den Zustand durch Komponenten (Funktionen oder Klassen) und Hooks (wie Usestate), wodurch die Wiederverwendbarkeit und Wartung von Code verbessert wird. 2. Virtuelle DOM- und Leistungsoptimierung: Reagieren Sie durch virtuelles DOM effizient die reale DOM, um die Leistung zu verbessern. 3. Lebenszyklus und Haken: Hooks (wie die Verwendung von UseEffect) ermöglichen Funktionskomponenten, Lebenszyklen zu verwalten und Nebeneffektoperationen durchzuführen. V.

Reacts Ökosystem: Bibliotheken, Tools und Best PracticesReacts Ökosystem: Bibliotheken, Tools und Best PracticesApr 18, 2025 am 12:23 AM

Das React-Ökosystem umfasst staatliche Verwaltungsbibliotheken (z. B. Redux), Routing-Bibliotheken (z. B. Reactrouter), UI-Komponentenbibliotheken (wie Material-UI), Testwerkzeuge (wie Scherz) und Erstellung von Tools (z. B. Webpack). Diese Tools arbeiten zusammen, um Entwicklern dabei zu helfen, Anwendungen effizient zu entwickeln und zu pflegen, und die Effizienz der Code zu verbessern.

Reagieren und Frontendentwicklung: Ein umfassender ÜberblickReagieren und Frontendentwicklung: Ein umfassender ÜberblickApr 18, 2025 am 12:23 AM

React ist eine von Facebook entwickelte JavaScript -Bibliothek zum Erstellen von Benutzeroberflächen. 1. Es wird komponentierte und virtuelle DOM -Technologie verwendet, um die Effizienz und Leistung der UI -Entwicklung zu verbessern. 2. Die Kernkonzepte von React umfassen Komponentierungen, Staatsmanagement (wie Usestate und UseEffect) und das Arbeitsprinzip des virtuellen DOM. 3. In praktischen Anwendungen unterstützt React von der grundlegenden Komponentenwiedergabe bis hin zur erweiterten asynchronen Datenverarbeitung. 4. Häufige Fehler wie das Vergessen, Schlüsselattribute oder falsche Statusaktualisierungen hinzuzufügen, können durch ReactDevtools und Protokolle debuggen werden. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung von React.MEMO, Code -Segmentierung und Halten des Codes und die Aufrechterhaltung der Zuverlässigkeit

Die Kraft des Reagierens in HTML: Moderne WebentwicklungDie Kraft des Reagierens in HTML: Moderne WebentwicklungApr 18, 2025 am 12:22 AM

Die Anwendung von React in HTML verbessert die Effizienz und Flexibilität der Webentwicklung durch Komponentierungen und virtuelles DOM. 1) Die Reaktion der Komponentierung Die Idee unterteilt die Benutzeroberfläche in wiederverwendbare Einheiten, um das Management zu vereinfachen. 2) Virtuelle DOM -Optimierungsleistung, minimieren Sie DOM -Operationen durch Differungsalgorithmus. 3) Die JSX -Syntax ermöglicht das Schreiben von HTML in JavaScript, um die Entwicklungseffizienz zu verbessern. 4) Verwenden Sie den Usestate -Hook, um den Status zu verwalten und dynamische Inhaltsaktualisierungen zu realisieren. 5) Optimierungsstrategien umfassen die Verwendung von React.Memo und Usecallback, um unnötiges Rendern zu verringern.

Das Verständnis der Hauptfunktion von React: Die Frontend -PerspektiveDas Verständnis der Hauptfunktion von React: Die Frontend -PerspektiveApr 18, 2025 am 12:15 AM

Zu den Hauptfunktionen von React gehören komponentiertes Denken, Staatsmanagement und virtuelles DOM. 1) Die Idee der Komponentierung ermöglicht es, die Benutzeroberfläche in wiederverwendbare Teile aufzuteilen, um die Lesbarkeit und Wartbarkeit der Code zu verbessern. 2) Das staatliche Management verwaltet dynamische Daten durch Status und Requisiten und ändert sich auslösen UI -Updates. 3) Aktualisieren Sie die Benutzeroberfläche virtuelle DOM -Optimierungsleistung durch die Berechnung des Mindestbetriebs der DOM -Replik im Speicher.

Frontend -Entwicklung mit Reaktionen: Vorteile und TechnikenFrontend -Entwicklung mit Reaktionen: Vorteile und TechnikenApr 17, 2025 am 12:25 AM

Die Vorteile von React sind seine Flexibilität und Effizienz, die sich in: 1) basierendem Design widerspiegeln, verbessert die Wiederverwendbarkeit des Codes. 2) Virtual DOM -Technologie optimiert die Leistung, insbesondere beim Umgang mit großen Mengen an Datenaktualisierungen. 3) Das reiche Ökosystem bietet eine große Anzahl von Bibliotheken und Tools von Drittanbietern. Wenn Sie verstehen, wie React Beispiele funktioniert und verwendet, können Sie seine Kernkonzepte und Best Practices beherrschen, um eine effiziente, wartbare Benutzeroberfläche zu erstellen.

Reagieren Sie gegen andere Frameworks: Vergleichen und KontrastoptionenReagieren Sie gegen andere Frameworks: Vergleichen und KontrastoptionenApr 17, 2025 am 12:23 AM

React ist eine JavaScript -Bibliothek zum Erstellen von Benutzeroberflächen, die für große und komplexe Anwendungen geeignet sind. 1. Der Kern von React ist Komponentierung und virtuelles DOM, wodurch die UI -Rendering -Leistung verbessert wird. 2. Im Vergleich zu VUE ist React flexibler, hat aber eine steile Lernkurve, die für große Projekte geeignet ist. 3. Im Vergleich zum Angular ist React leichter, hängt von der Gemeinschaftsökologie ab und geeignet für Projekte, die Flexibilität erfordern.

Entmystifizierende Reaktionen in HTML: Wie alles funktioniertEntmystifizierende Reaktionen in HTML: Wie alles funktioniertApr 17, 2025 am 12:21 AM

React arbeitet in HTML über virtuelles DOM. 1) React verwendet die JSX-Syntax, um HTML-ähnliche Strukturen zu schreiben. 2) Virtual DOM -Management -UI -Update, effizientes Rendering durch Differungsalgorithmus. 3) Verwenden Sie Reactdom.render (), um die Komponente zum realen DOM zu rendern. 4) Optimierung und Best Practices umfassen die Verwendung von React.MEMO und Komponentenaufteilung zur Verbesserung der Leistung und Wartbarkeit.

See all articles

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 vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.