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

Pourquoi et quand devrions-nous lier des fonctions et des gestionnaires d'événements dans React ?

Susan Sarandon
Libérer: 2024-10-27 02:35:30
original
719 Les gens l'ont consulté

 Why and When Should We Bind Functions and Event Handlers in React?

Pourquoi et quand devrions-nous lier des fonctions et des gestionnaires d'événements dans React ?

Dans React, le contexte des méthodes de classe n'est pas lié par défaut. Lors de l'accès à l'état ou aux accessoires du composant dans ces méthodes, il est nécessaire de lier leur contexte.

Options de liaison de fonctions

Il existe plusieurs façons de lier des fonctions :

1. Liaison du constructeur :

class SomeClass extends Component {
  constructor() {
    super();
    this.someEventHandler = this.someEventHandler.bind(this);
  }

  someEventHandler(event) {}
}
Copier après la connexion

2. Fonctions de la grosse flèche :

class SomeClass extends Component {
  someEventHandler = (event) => {
  };
}
Copier après la connexion

3. Liaison de fonction Lambda en ligne :

onChange={(event) => this.someEventHandler(event)}
Copier après la connexion
Copier après la connexion

4. Liaison de méthode .bind() :

onChange={this.someEventHandler.bind(this)}
Copier après la connexion
Copier après la connexion

Options de liaison du gestionnaire d'événements

1. Liaison de fonction Lambda en ligne :

onChange={(event) => this.someEventHandler(event)}
Copier après la connexion
Copier après la connexion

2. Liaison de méthode .bind() :

onChange={this.someEventHandler.bind(this)}
Copier après la connexion
Copier après la connexion

Choisir la méthode de liaison

La méthode de liaison appropriée dépend de la structure du composant et de la fonctionnalité requise :

Pré-liaison (fonctions de liaison de constructeur ou de flèche grasse) :

  • À utiliser lorsque la fonction a besoin d'accéder à l'état ou aux accessoires du composant.

Liaison d'exécution (liaison de fonction Lambda en ligne ou méthode .bind()) :

  • À utiliser lorsque la fonction n'accède pas à l'état ou aux accessoires du composant.
  • Permet d'ajouter des paramètres supplémentaires à être transmis au gestionnaire.

Passer des paramètres supplémentaires :

  • Pour la pré-liaison, transmettez les paramètres en tant qu'arguments de fonction dans le constructeur ou utilisez fat fonctions fléchées avec des paramètres supplémentaires.
  • Pour la liaison d'exécution, utilisez les fonctions lambda en ligne ou .bind() avec des paramètres supplémentaires.

Exemple d'utilisation

Dans le code fourni extrait :

render() {
  return <input onChange={this.someEventHandler.bind(this)} />;
}
Copier après la connexion

Il s'agit d'une liaison d'exécution utilisant la méthode .bind(), qui lie le contexte de someEventHandler à l'instance du composant.

render() {
  return ;
}
Copier après la connexion

Il s'agit d'une liaison d'exécution utilisant une fonction lambda en ligne, qui lie également le contexte de someEventHandler à l'instance du composant.

render() {
  return <input onChange={this.someEventHandler} />;
}
Copier après la connexion

Il s'agit d'une liaison d'exécution sans aucun paramètre supplémentaire. Cependant, il est recommandé de pré-lier la fonction someEventHandler dans le constructeur ou d'utiliser une fonction de grosse flèche pour garantir que le contexte correct est maintenu.

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
À 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!