Heim >Web-Frontend >js-Tutorial >Wie behebe ich den Fehler „Eigenschaft von Undefiniert kann nicht gelesen werden' in der Kartenfunktion von React?

Wie behebe ich den Fehler „Eigenschaft von Undefiniert kann nicht gelesen werden' in der Kartenfunktion von React?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-20 06:28:29822Durchsuche

How to Resolve the

Den Fehler „Eigenschaft von Undefiniert kann nicht gelesen werden“ in der Map-Funktion von React verstehen

In der React-Entwicklung tritt häufig der Fehler „TypeError“ auf : Die Eigenschaft „onPlayerScoreChange“ von „undefiniert“ kann bei Verwendung der Kartenfunktion nicht gelesen werden. Dieses Problem tritt typischerweise aufgrund eines fehlerhaften Bindungsprozesses der Kartenfunktion auf.

Kontext

Im bereitgestellten Code haben wir eine hierarchische Komponentenstruktur mit den folgenden Komponenten:

  • Übergeordnetes Element: App
  • Untergeordnetes Element: Spieler
  • Enkelkind: Zähler

Die Methode „onPlayerScoreChange“ ist in der App-Komponente definiert und soll den Punktestand eines Spielers basierend auf Benutzereingaben aktualisieren.

Das Problem

Der Fehler tritt in der Kartenfunktion der „App“-Komponente auf, wo die „ Die Requisite „onScoreChange“ wird der Methode „onPlayerScoreChange“ der App-Komponente zugewiesen:

{this.state.initialPlayers.map(function(player, index) {
    return(
        <Player 
        name={player.name} 
        score={player.score} 
        key={player.id} 
        index={index}
        onScoreChange={this.onPlayerScoreChange}
        />
    )
})}

Der Kontext der Kartenfunktion unterscheidet sich jedoch vom Kontext der React-Komponente. Daher bezieht sich „this“ innerhalb der Funktion auf etwas anderes als die App-Komponente, wodurch „this.onPlayerScoreChange“ undefiniert wird.

Die Lösung

Um dieses Problem zu beheben Bei diesem Problem müssen wir die Kartenfunktion an den Kontext der App-Komponente binden. Dies kann entweder durch die Verwendung von Pfeilfunktionen (Lambda) oder der Bindungsmethode erreicht werden.

Pfeilfunktionen verwenden

{this.state.initialPlayers.map((player, index) => {
    return(
        <Player 
        name={player.name} 
        score={player.score} 
        key={player.id} 
        index={index}
        onScoreChange={this.onPlayerScoreChange}
        />
    )
})}

Pfeilfunktionen binden automatisch den „this“-Wert an den umgebenden Bereich, sodass keine explizite Bindung erforderlich ist.

Verwendung der Bind-Methode

{this.state.initialPlayers.map(function(player, index) {
    return(
        <Player 
        name={player.name} 
        score={player.score} 
        key={player.id} 
        index={index}
        onScoreChange={this.onPlayerScoreChange.bind(this)}
        />
    )
}.bind(this))}

Die Bind-Methode bindet die Kartenfunktion explizit an den Kontext der App-Komponente .

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Eigenschaft von Undefiniert kann nicht gelesen werden' in der Kartenfunktion von React?. 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