Maison >interface Web >js tutoriel >Comment gérer efficacement la communication inter-composants dans React ?

Comment gérer efficacement la communication inter-composants dans React ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 01:48:11124parcourir

How to Effectively Manage Inter-Component Communication in React?

Communication inter-composants dans React

Dans React, maintenir l'état de plusieurs composants peut être difficile. Voici comment faciliter la communication entre les composants associés :

Scénario n°1 : Filtres en tant qu'enfant de la liste

Passer un gestionnaire du parent (Liste) à l'enfant ( Filtres). Lorsque le filtre change, le gestionnaire dans Filters appelle la méthode du parent pour mettre à jour l'état et déclencher un nouveau rendu dans List.

Scénario n°2 : parent commun pour les filtres et la liste

Introduire un composant parent qui délègue la communication. Le parent transmet un gestionnaire aux filtres et met à jour l'état des filtres et de la liste lorsque le filtre change.

Scénario n°3 : système d'événements global

Pour les composants sans relation parent-enfant, envisagez d'utiliser un système d'événements global. Définissez un nom d'événement, tel que « filterUpdated », et abonnez-vous à celui-ci dans les composants Filtres et Liste. Lors des changements de filtre, déclenchez l'événement, qui informera tous les composants abonnés de mettre à jour leur état en conséquence.

Exemple :

// Global events file
export const myEmitter = new EventEmitter();

// Filters component
componentDidMount() {
  myEmitter.on('filterUpdated', this.handleFilterUpdate);
}

handleFilterChange() {
  // Emit event and pass new filter value
  myEmitter.emit('filterUpdated', newFilterValue);
}

// List component
componentDidMount() {
  myEmitter.on('filterUpdated', this.handleFilterUpdate);
}

handleFilterUpdate(newFilterValue) {
  // Update state
  this.setState({ filterValue: newFilterValue });
}

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!

Déclaration:
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