Maison > interface Web > js tutoriel > le corps du texte

Pourquoi ne puis-je pas lire la propriété \'onPlayerScoreChange\' à l'aide de \'map\' dans React ?

Linda Hamilton
Libérer: 2024-10-20 06:30:29
original
497 Les gens l'ont consulté

Why Can't I Read 'onPlayerScoreChange' Property Using 'map' in React?

Dévoilement de la cause de l'erreur « Impossible de lire la propriété » dans React lors de l'utilisation de « map »

Lorsque vous travaillez avec React, vous rencontrez l'erreur " TypeError : Impossible de lire la propriété 'onPlayerScoreChange' de non défini" peut être frustrant. Cela se produit généralement en raison d'une liaison insuffisante de la fonction en question.

Dans le code fourni, 'onPlayerScoreChange' est une méthode qui s'exécute lorsque le score d'un joueur est modifié. Cette méthode réside dans le composant Grandparent. Cependant, un examen révèle un oubli dans la liaison de « onPlayerScoreChange » dans la fonction « map » du composant Parent.

Comprendre le contexte de « ce »

Pour comprendre ce problème, nous devons approfondir le contexte « ce » dans les fonctions JavaScript. Lorsque vous utilisez une expression « this » dans une fonction ordinaire (fonction non-flèche), sa valeur dépendra de la manière dont la fonction a été appelée. Par conséquent, lors de l'exécution de « this.onPlayerScoreChange » dans la fonction « map », « this » fera référence au contexte d'exécution de la fonction « map », et non au contexte du composant parent.

Résoudre le problème de liaison

Pour résoudre ce problème, nous devons nous assurer que « onPlayerScoreChange » est lié au contexte du composant Parent afin que « this » fasse correctement référence au composant Parent. Ceci peut être réalisé de deux manières :

Option 1 : Fonctions fléchées

Les fonctions fléchées héritent de leur contexte « ceci » de leur portée lexicale immédiate, éliminant ainsi le besoin de termes explicites. obligatoire. En remplaçant la fonction régulière dans la « carte » par une fonction de flèche, le contexte « ce » pointera automatiquement vers le composant Parent :

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

Option 2 : Méthode de liaison

Alternativement, la fonction régulière peut être liée au contexte du composant Parent à l'aide de la méthode 'bind'. Cette approche implique de spécifier explicitement la valeur de « this » lors de l'appel de la fonction :

{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))}
Copier après la connexion

Conclusion

En implémentant une liaison de fonction appropriée, vous pouvez résoudre efficacement le " Impossible de lire la propriété 'onPlayerScoreChange' de l'erreur non définie" dans React lors de l'utilisation de la fonction 'map'.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!