Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Patricia Arquette
Freigeben: 2024-10-20 06:28:29
Original
725 Leute haben es durchsucht

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}
        />
    )
})}
Nach dem Login kopieren

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}
        />
    )
})}
Nach dem Login kopieren

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))}
Nach dem Login kopieren

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!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!