Heim >Web-Frontend >js-Tutorial >Wie aktualisiere ich Objekte innerhalb eines ReactJS-Array-Status effizient?

Wie aktualisiere ich Objekte innerhalb eines ReactJS-Array-Status effizient?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 19:29:10337Durchsuche

How Do I Efficiently Update Objects within a ReactJS Array State?

Aktualisieren von Objekten im ReactJS-Array: Eine eingehende Untersuchung

In ReactJS enthalten Arrays innerhalb des Status häufig Objekte. Das Aktualisieren dieser Objekte kann eine Herausforderung sein. In diesem Artikel wird eine effektive Methode zur Lösung dieser Aufgabe beschrieben.

Das Problem verstehen

Betrachten Sie das folgende Beispiel:

var CommentBox = React.createClass({
  getInitialState: function() {
    return {data: [
      { id: 1, author: "john", text: "foo" },
      { id: 2, author: "bob", text: "bar" }
    ]};
  },
  handleCommentEdit: function(id, text) {
    var existingComment = this.state.data.filter({ function(c) { c.id == id; }).first();
    var updatedComments = ??; // not sure how to do this  

    this.setState({data: updatedComments});
  }
}

Die Funktion handleCommentEdit ist für die Aktualisierung der Texteigenschaft eines Kommentarobjekts mit einer bestimmten ID verantwortlich. Es stellt sich jedoch die Frage: Wie erstellen wir eine Reihe aktualisierter Kommentare?

Eine robuste Lösung

Eine effiziente Lösung beinhaltet die Verwendung von Object.assign:

handleCommentEdit: function(id, text) {
    this.setState({
      data: this.state.data.map(el => (el.id === id ? Object.assign({}, el, { text }) : el))
    });
}

Dieses Code-Snippet wird den vorhandenen Kommentaren zugeordnet und behält alle unveränderten Objekte bei. Für das Objekt mit der passenden ID wird ein neues Objekt mit der aktualisierten Texteigenschaft erstellt, während die ursprünglichen Eigenschaften beibehalten werden.

ES2018-Verbesserungen

Für diejenigen, die das neueste JavaScript verwenden Funktionen bietet ES2018 mit Spread eine noch prägnantere Lösung:

this.setState({
  data: this.state.data.map(el => (el.id === id ? {...el, text} : el))
});

Mit Spread kann das aktualisierte Objekt durch einfaches Ersetzen erstellt werden die vorhandene Texteigenschaft.

Fazit

Das Aktualisieren von Objekten innerhalb von Arrays in ReactJS erfordert einen sorgfältigen Umgang mit der Unveränderlichkeit von Objekten. Durch die Nutzung von Object.assign oder spread können Entwickler Objekteigenschaften effizient aktualisieren und gleichzeitig die Integrität des ursprünglichen Arrays wahren. Diese Methoden bieten eine robuste und prägnante Lösung für diese häufige ReactJS-Programmierherausforderung.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich Objekte innerhalb eines ReactJS-Array-Status effizient?. 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