Maison >interface Web >js tutoriel >Comment optimiser le hook useEffect pour déclencher une fonction uniquement lors du rendu initial ?

Comment optimiser le hook useEffect pour déclencher une fonction uniquement lors du rendu initial ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-17 22:02:02962parcourir

How to Optimize useEffect Hook to Trigger a Function Only on Initial Render?

Hook useEffect optimisé : appeler la fonction d'initialisation une seule fois

Le hook useEffect de React permet d'exécuter des fonctions personnalisées en réponse aux changements dans les accessoires ou l'état du composant. Cependant, dans certains scénarios, il est souhaité d'appeler une fonction lors du rendu initial uniquement, simulant le comportement de la méthode de cycle de vie du composant existant DidMount.

Considérez le composant basé sur la classe suivant :

<code class="javascript">class MyComponent extends React.PureComponent {
    componentDidMount() {
        loadDataOnlyOnce();
    }
    render() { ... }
}</code>

Dans un composant basé sur une fonction utilisant des hooks, cela peut être traduit comme suit :

<code class="javascript">function MyComponent() {
    useEffect(() => {
        loadDataOnlyOnce(); // This will fire on every change
    }, [...???]);
    return (...);
}</code>

Pour garantir que la fonction n'est appelée qu'une seule fois, un tableau vide doit être fourni comme deuxième argument de useEffect :

<code class="javascript">function MyComponent() {
  useEffect(() => {
    loadDataOnlyOnce();
  }, []);

  return <div> {/* ... */} </div>;
}</code>

En fournissant un tableau vide, useEffect ne se déclenchera qu'après la phase de rendu initiale, permettant une initialisation efficace des composants sans rendus inutiles.

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