Maison > interface Web > js tutoriel > Les fonctions fléchées ES6 peuvent-elles lier de manière permanente les méthodes de classe dans React ?

Les fonctions fléchées ES6 peuvent-elles lier de manière permanente les méthodes de classe dans React ?

Patricia Arquette
Libérer: 2024-12-13 11:15:10
original
205 Les gens l'ont consulté

Can ES6 Arrow Functions Permanently Bind Class Methods in React?

Comment utiliser les fonctions fléchées dans les classes ES6 comme méthodes de classe

Lors de l'intégration initiale des classes ES6 dans React, il était courant de lier une instance méthodes explicitement (comme démontré dans l’exemple ci-dessous). Cependant, une question clé se pose : est-il possible avec ES6 de lier de manière permanente des fonctions de classe à une instance de classe à l'aide de fonctions fléchées, simplifiant ainsi leur utilisation comme rappels ?

class SomeClass extends React.Component {
  // Bound method
  constructor() {
    this.handleInputChange = this.handleInputChange.bind(this);
  }
}
Copier après la connexion

CoffeeScript propose cette fonctionnalité, mais on ne sait pas si quelque chose de similaire peut être réalisé dans ES6.

class SomeClass extends React.Component {
  // Attempted arrow function binding
  handleInputChange(val) => {
    console.log('selectionMade: ', val);
  }
}
Copier après la connexion

Cette question cherche à comprendre si les fonctions fléchées peuvent être liées de manière permanente aux instances de classe dans ES6, leur permettant d'être sans effort utilisées comme fonctions de rappel, garantissant le contexte correct lorsqu'elles sont transmises à des fonctions telles que setTimeout.

Solution : correction de la syntaxe

La tentative originale de définir une méthode de classe à l'aide d'une flèche La fonction contient une erreur de syntaxe mineure. La syntaxe correcte est indiquée ci-dessous :

class SomeClass extends React.Component {
  handleInputChange = (val) => {
    console.log('selectionMade: ', val);
  }
}
Copier après la connexion

Il est important de noter que cette syntaxe nécessite l'activation de fonctionnalités expérimentales dans Babel pour une compilation réussie. En installant le plugin nécessaire (transform-class-properties), vous pouvez activer ces fonctionnalités expérimentales.

De plus, vous pouvez trouver une discussion complète sur les champs de classe et les propriétés statiques dans la documentation officielle de la proposition.

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.cn
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