recherche
Maisoninterface WebQuestions et réponses frontalesComment appeler la méthode du composant enfant dans le composant parent React

Méthode d'appel : 1. Les appels dans les composants de classe peuvent être implémentés à l'aide de React.createRef(), de la déclaration fonctionnelle de l'attribut onRef personnalisé ref ou props ; 2. Les appels dans les composants de fonction et les composants Hook peuvent être implémentés à l'aide de useImperativeHandle ou forwardRef throw Utiliser le sous-composant. ref pour y parvenir.

Comment appeler la méthode du composant enfant dans le composant parent React

L'environnement d'exploitation de ce tutoriel : système Windows 7, version React18, ordinateur Dell G3.

Dans React, nous appelons souvent des méthodes de composants parents dans des composants enfants, généralement à l'aide de rappels d'accessoires. Mais parfois, il est également nécessaire d'appeler la méthode du composant enfant dans le composant parent pour obtenir une cohésion élevée. Il existe de nombreuses méthodes, prenez-les selon vos besoins.

Dans les composants de classe


1, React.createRef()

  • Avantages : facile à comprendre, pointé avec la réf.

  • Inconvénients : les sous-composants utilisant HOC ne sont pas disponibles et ne peuvent pas pointer vers de vrais sous-composants

    Par exemple, certaines méthodes d'écriture couramment utilisées, telles que les sous-composants enveloppés dans @observer de mobx, ne s'appliquent pas à cette méthode.

import React, { Component } from 'react';

class Sub extends Component {
  callback() {
    console.log('执行回调');
  }
  render() {
    return <div>子组件</div>;
  }
}

class Super extends Component {
  constructor(props) {
    super(props);
    this.sub = React.createRef();
  }
  handleOnClick() {
    this.sub.callback();
  }
  render() {
    return (
      <div>
        <Sub ref={this.sub}></Sub>
      </div>
    );
  }
}

2. Déclaration fonctionnelle de ref

  • Avantages : l'écriture de la référence est simple
  • Inconvénients : les sous-composants utilisant HOC ne sont pas disponibles et ne peuvent pas pointer vers de vrais sous-composants (comme ci-dessus)

Méthode d'utilisation et supérieure Pareil, mais la manière de définir ref est différente.

...

<Sub ref={ref => this.sub = ref}></Sub>

...

3. Utilisez des accessoires pour personnaliser l'attribut onRef

  • Avantages : Si le sous-composant est imbriqué avec HOC, il peut également pointer vers le sous-composant réel.
  • Inconvénients : besoin de personnaliser les attributs des accessoires
import React, { Component } from &#39;react&#39;;
import { observer } from &#39;mobx-react&#39;

@observer
class Sub extends Component {
	componentDidMount(){
    // 将子组件指向父组件的变量
		this.props.onRef && this.props.onRef(this);
	}
	callback(){
		console.log("执行我")
	}
	render(){
		return (<div>子组件</div>);
	}
}

class Super extends Component {
	handleOnClick(){
       // 可以调用子组件方法
		this.Sub.callback();
	}
	render(){
		return (
          <div>
			<div onClick={this.handleOnClick}>click</div>
			<Sub onRef={ node => this.Sub = node }></Sub>	
	   	  </div>)
	}
}

Composant de fonction, composant Hook


1, utilisezImperativeHandle

  • Avantages : 1. La méthode d’écriture est simple et facile à comprendre. 2. Si le sous-composant a un HOC imbriqué, il peut également pointer vers le vrai sous-composant
  • Inconvénients : 1. Besoin de personnaliser les attributs des accessoires 2. Vous devez personnaliser la méthode exposée
import React, { useImperativeHandle } from &#39;react&#39;;
import { observer } from &#39;mobx-react&#39;


const Parent = () => {
  let ChildRef = React.createRef();

  function handleOnClick() {
    ChildRef.current.func();
  }

  return (
    <div>
      <button onClick={handleOnClick}>click</button>
      <Child onRef={ChildRef} />
    </div>
  );
};

const Child = observer(props => {
  //用useImperativeHandle暴露一些外部ref能访问的属性
  useImperativeHandle(props.onRef, () => {
    // 需要将暴露的接口返回出去
    return {
      func: func,
    };
  });
  function func() {
    console.log(&#39;执行我&#39;);
  }
  return <div>子组件</div>;
});

export default Parent;

2. forwardRef

Utilisez forwardRef pour lancer la référence du sous-composant

Cette méthode est en fait plus adaptée à la personnalisation de HOC. Mais le problème est que withRouter, connect, Form.create et d'autres méthodes ne peuvent pas lancer de référence. Si Child lui-même doit imbriquer ces méthodes, elles ne peuvent fondamentalement pas être utilisées ensemble. forwardRef lui-même est également utilisé pour lancer des références d'éléments enfants, tels que des entrées et d'autres éléments natifs. Il ne convient pas pour lancer des références de composants car les scénarios d'utilisation des composants sont trop complexes.

import React, { useRef, useImperativeHandle } from &#39;react&#39;;
import ReactDOM from &#39;react-dom&#39;;
import { observer } from &#39;mobx-react&#39;

const FancyInput = React.forwardRef((props, ref) => {
  const inputRef = useRef();
  useImperativeHandle(ref, () => ({
    focus: () => {
      inputRef.current.focus();
    }
  }));

  return <input ref={inputRef} type="text" />
});

const Sub = observer(FancyInput)

const App = props => {
  const fancyInputRef = useRef();

  return (
    <div>
      <FancyInput ref={fancyInputRef} />
      <button
        onClick={() => fancyInputRef.current.focus()}
      >父组件调用子组件的 focus</button>
    </div>
  )
}

export default App;

Résumé

Il existe deux situations dans lesquelles un composant parent appelle une fonction de composant enfant

  • Pas d'imbrication HOC des composants enfants : il est recommandé d'utiliser ref pour appeler directement
  • Avec l'imbrication HOC : il est recommandé d'utiliser une fonction personnalisée props

【Recommandations associées : Tutoriel vidéo Redis, Enseignement de la programmation

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
Développement frontal avec React: Avantages et techniquesDéveloppement frontal avec React: Avantages et techniquesApr 17, 2025 am 12:25 AM

Les avantages de React sont sa flexibilité et son efficacité, qui se reflètent dans: 1) la conception basée sur les composants améliore la réutilisabilité du code; 2) La technologie DOM virtuelle optimise les performances, en particulier lors de la gestion de grandes quantités de mises à jour de données; 3) L'écosystème riche fournit un grand nombre de bibliothèques et d'outils tiers. En comprenant comment React fonctionne et utilise des exemples, vous pouvez maîtriser ses concepts principaux et les meilleures pratiques pour créer une interface utilisateur efficace et maintenable.

Réagir vs autres cadres: Comparaison et options contrastéesRéagir vs autres cadres: Comparaison et options contrastéesApr 17, 2025 am 12:23 AM

React est une bibliothèque JavaScript pour la construction d'interfaces utilisateur, adaptées aux applications grandes et complexes. 1. Le noyau de React est la composante et le DOM virtuel, qui améliore les performances de rendu d'interface utilisateur. 2. Comparé à Vue, React est plus flexible mais a une courbe d'apprentissage abrupte, qui convient aux grands projets. 3. Comparé à Angular, React est plus léger, dépend de l'écologie communautaire et adapté aux projets qui nécessitent une flexibilité.

Démystifier réact dans HTML: comment tout cela fonctionneDémystifier réact dans HTML: comment tout cela fonctionneApr 17, 2025 am 12:21 AM

React fonctionne en HTML via Dom virtuel. 1) React utilise la syntaxe JSX pour écrire des structures de type HTML. 2) Mise à jour de l'interface utilisateur de gestion DOM virtuelle, rendu efficace via l'algorithme de difficulté. 3) Utilisez Reactdom.Render () pour rendre le composant au vrai Dom. 4) L'optimisation et les meilleures pratiques incluent l'utilisation de react.memo et de division des composants pour améliorer les performances et la maintenabilité.

React in Action: Exemples d'applications du monde réelReact in Action: Exemples d'applications du monde réelApr 17, 2025 am 12:20 AM

React est largement utilisé dans le commerce électronique, les médias sociaux et la visualisation des données. 1) Les plates-formes de commerce électronique utilisent React pour construire des composants de panier d'achat, utiliser USESTATE pour gérer l'état, les événements d'ONCLICK pour traiter les événements et cartographier la fonction pour rendre les listes. 2) Les applications de médias sociaux interagissent avec l'API via USEEFFECT pour afficher le contenu dynamique. 3) La visualisation des données utilise la bibliothèque React-ChartJS-2 pour rendre les graphiques, et la conception des composants est facile à intégrer des applications.

Architecture frontend avec réact: meilleures pratiquesArchitecture frontend avec réact: meilleures pratiquesApr 17, 2025 am 12:10 AM

Les meilleures pratiques pour React Front-end Architecture comprennent: 1. Conception et réutilisation des composants: Concevoir une seule responsabilité, des composants faciles à comprendre et à tester pour obtenir une réutilisation élevée. 2. Gestion de l'État: utilisez UseState, UserReducer, Contextapi ou Redux / Mobx pour gérer l'état pour éviter une complexité excessive. 3. Optimisation des performances: optimiser les performances via React.Memo, UseCallback, UseMemo et d'autres méthodes pour trouver le point d'équilibre. 4. Organisation du code et modularité: organiser le code en fonction des modules fonctionnels pour améliorer la gestion et la maintenabilité. 5. Test et assurance qualité: test avec plaisante

React à l'intérieur de HTML: intégration JavaScript pour les pages Web dynamiquesReact à l'intérieur de HTML: intégration JavaScript pour les pages Web dynamiquesApr 16, 2025 am 12:06 AM

Pour intégrer React dans HTML, suivez ces étapes: 1. Introduisez React et Reactdom dans les fichiers HTML. 2. Définissez un composant réact. 3. Rendez le composant en éléments HTML en utilisant Reactdom. Grâce à ces étapes, les pages HTML statiques peuvent être transformées en expériences interactives dynamiques.

Les avantages de la réaction: performance, réutilisabilité, et plusLes avantages de la réaction: performance, réutilisabilité, et plusApr 15, 2025 am 12:05 AM

La popularité de React comprend son optimisation des performances, sa réutilisation des composants et un écosystème riche. 1. L'optimisation des performances réalise des mises à jour efficaces via DOM virtuel et les mécanismes de diffusion. 2. La réutilisation des composants réduit le code en double par les composants réutilisables. 3. L'écosystème riche et le flux de données unidirectionnel améliorent l'expérience de développement.

React: Création d'interfaces utilisateur dynamiques et interactivesReact: Création d'interfaces utilisateur dynamiques et interactivesApr 14, 2025 am 12:08 AM

React est l'outil de choix pour construire des interfaces utilisateur dynamiques et interactives. 1) La composante et JSX font la division et la réutilisation de l'interface utilisateur simple. 2) La gestion de l'État est implémentée via le crochet USESTATE pour déclencher des mises à jour de l'interface utilisateur. 3) Le mécanisme de traitement des événements répond à l'interaction des utilisateurs et améliore l'expérience utilisateur.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles