{"id":70256,"date":"2023-06-22T08:57:11","date_gmt":"2023-06-22T07:57:11","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=70256&#038;post_type=knowledgebase&#038;preview_id=70256"},"modified":"2025-10-01T20:42:40","modified_gmt":"2025-10-01T19:42:40","slug":"react-useeffect","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/","title":{"rendered":"D\u00e9mystifier le hook useEffect de React"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-react-js\/\">React<\/a> est l&rsquo;une des <a href=\"https:\/\/kinsta.com\/fr\/blog\/bibliotheques-javascript\/\">biblioth\u00e8ques JavaScript<\/a> les plus populaires pour la construction d&rsquo;interfaces utilisateur. Lors de la construction de ces interfaces, vous pouvez avoir besoin d&rsquo;effectuer des effets de bord, tels que la r\u00e9cup\u00e9ration de donn\u00e9es \u00e0 partir d&rsquo;une <a href=\"https:\/\/kinsta.com\/fr\/blog\/rest-api-vs-web-api\/\">API<\/a>, l&rsquo;abonnement \u00e0 des \u00e9v\u00e9nements ou la manipulation du DOM.<\/p>\n<p>C&rsquo;est l\u00e0 que le puissant hook <code>useEffect<\/code> entre en jeu. Il vous permet de g\u00e9rer ces effets secondaires de mani\u00e8re transparente, d\u00e9clarative et efficace, en veillant \u00e0 ce que votre interface utilisateur reste responsive et \u00e0 jour.<\/p>\n<p>Que vous soyez un nouveau venu dans React ou un <a href=\"https:\/\/kinsta.com\/fr\/blog\/types-de-developpeurs\/\">d\u00e9veloppeur<\/a> exp\u00e9riment\u00e9, il est essentiel de comprendre et de ma\u00eetriser <code>useEffect<\/code> pour cr\u00e9er des applications robustes et dynamiques. Dans cet article, vous apprendrez comment fonctionne le hook <code>useEffect<\/code> et comment l&rsquo;utiliser dans votre projet React.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Qu&rsquo;est-ce que l&rsquo;effet de bord dans React ?<\/h2>\n<p>Lorsque vous travaillez avec des composants React, il arrive que vous ayez besoin d&rsquo;interagir avec des entit\u00e9s ou d&rsquo;effectuer des actions en dehors de la port\u00e9e de React. Ces interactions externes sont connues sous le nom d&rsquo;<strong>effets de bord<\/strong>.<\/p>\n<p>Dans React, la plupart des composants sont des fonctions pures, ce qui signifie qu&rsquo;ils re\u00e7oivent des entr\u00e9es (props) et produisent des sorties pr\u00e9visibles (JSX), comme le montre l&rsquo;exemple ci-dessous :<\/p>\n<pre><code class=\"language-jsx\">export default function App() {\n  return &lt;User userName=\"JaneDoe\" \/&gt;   \n}\n  \nfunction User(props) {\n  return &lt;h1&gt;{props.userName}&lt;\/h1&gt;; \/\/ John Doe\n}<\/code><\/pre>\n<p>Cependant, les effets secondaires ne sont pas pr\u00e9visibles car ils impliquent des interactions en dehors du champ d&rsquo;application habituel de React.<\/p>\n<p>Prenons un exemple o\u00f9 vous souhaitez modifier dynamiquement le titre de l&rsquo;onglet du navigateur pour afficher l&rsquo;adresse <code>userName<\/code> de l&rsquo;utilisateur. Bien qu&rsquo;il puisse \u00eatre tentant de le faire directement dans le composant, ce n&rsquo;est pas l&rsquo;approche recommand\u00e9e car cela est consid\u00e9r\u00e9 comme un effet de bord :<\/p>\n<pre><code class=\"language-jsx\">const User = ({ userName }) =&gt; {\n  document.title = `Hello ${userName}`; \/\/ \u274cNever do this in the component body \u2014 It is a side effect.\n\n  return &lt;h1&gt;{userName}&lt;\/h1&gt;;\n}<\/code><\/pre>\n<p>L&rsquo;ex\u00e9cution d&rsquo;effets de bord directement dans le corps du composant peut interf\u00e9rer avec le processus de rendu de notre composant React.<\/p>\n<p>Pour \u00e9viter toute interf\u00e9rence, vous devez s\u00e9parer les effets secondaires de mani\u00e8re \u00e0 ce qu&rsquo;ils ne rendent ou ne fonctionnent qu&rsquo;apr\u00e8s le rendu de notre composant, ce qui garantit une s\u00e9paration claire entre le processus de rendu et toutes les interactions externes n\u00e9cessaires. Cette s\u00e9paration est r\u00e9alis\u00e9e \u00e0 l&rsquo;aide du hook <code>useEffect<\/code>.<\/p>\n<h2>Comprendre les principes de base de useEffect<\/h2>\n<p>Le hook <code>useEffect<\/code> est con\u00e7u pour imiter les m\u00e9thodes de cycle de vie telles que <code>componentDidMount<\/code>, <code>componentDidUpdate<\/code> et <code>componentWillUnmount<\/code> que l&rsquo;on trouve dans les composants de classe.<\/p>\n<p>Pour utiliser <code>useEffect<\/code>, vous devez l&rsquo;importer depuis \u00ab react \u00bb et l&rsquo;appeler dans un <a href=\"https:\/\/kinsta.com\/fr\/blog\/composants-web\/\">composant<\/a> de fonction (au niveau sup\u00e9rieur du composant). Elle prend deux arguments : une fonction de rappel et un tableau de d\u00e9pendances facultatif.<\/p>\n<pre><code class=\"language-jsx\">useEffect(callbackFn, [dependencies]);<\/code><\/pre>\n<p>Cela peut \u00eatre mieux \u00e9crit comme suit :<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ code to run when the effect is triggered\n}, [dependencies]);<\/code><\/pre>\n<ul>\n<li>La <strong>fonction de rappel<\/strong> contient le code \u00e0 ex\u00e9cuter lorsque le composant est rendu ou que la valeur de la d\u00e9pendance change. C&rsquo;est ici que vous effectuez les effets de bord.<\/li>\n<li>Le <strong>tableau de d\u00e9pendances<\/strong> sp\u00e9cifie les valeurs qui doivent \u00eatre surveill\u00e9es pour les changements. La fonction de rappel sera ex\u00e9cut\u00e9e lorsque l&rsquo;une des valeurs de ce tableau changera.<\/li>\n<\/ul>\n<p>Par exemple, vous pouvez maintenant corriger l&rsquo;exemple pr\u00e9c\u00e9dent pour effectuer l&rsquo;effet de bord correctement dans un hook <code>useEffect<\/code> :<\/p>\n<pre><code class=\"language-jsx\">import { useEffect } from 'react';\n\nconst User = ({ userName }) =&gt; {\n  useEffect(() =&gt; {\n    document.title = `Hello ${userName}`;\n  }, [userName]);\n    \n  return &lt;h1&gt;{userName}&lt;\/h1&gt;;   \n}<\/code><\/pre>\n<p>Dans l&rsquo;exemple ci-dessus, le hook <code>useEffect<\/code> sera appel\u00e9 apr\u00e8s le rendu du composant et chaque fois que la d\u00e9pendance &#8211; la valeur de <code>userName<\/code>&#8211; changera.<\/p>\n<h2>Utilisation des d\u00e9pendances dans useEffect<\/h2>\n<p>Les d\u00e9pendances jouent un r\u00f4le crucial dans le contr\u00f4le de l&rsquo;ex\u00e9cution de <code>useEffect<\/code>. C&rsquo;est le deuxi\u00e8me argument du hook <code>useEffect<\/code>.<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ code to run when the effect is triggered\n}, [dependencies]);<\/code><\/pre>\n<p>L&rsquo;utilisation d&rsquo;un tableau de d\u00e9pendances vide <code>[]<\/code> garantit que l&rsquo;effet ne s&rsquo;ex\u00e9cute qu&rsquo;une seule fois, simulant ainsi <code>componentDidMount<\/code>. La sp\u00e9cification correcte des d\u00e9pendances permet \u00e0 l&rsquo;effet de se mettre \u00e0 jour lorsque des valeurs sp\u00e9cifiques changent, comme dans le cas de <code>componentDidUpdate<\/code>.<\/p>\n<p><strong>Remarque :<\/strong> vous devez faire preuve de prudence lorsque vous traitez des d\u00e9pendances complexes. Les mises \u00e0 jour inutiles peuvent \u00eatre \u00e9vit\u00e9es en s\u00e9lectionnant soigneusement les valeurs \u00e0 inclure dans le tableau de d\u00e9pendances.<\/p>\n<p>Si vous omettez compl\u00e8tement le tableau de d\u00e9pendances, l&rsquo;effet sera ex\u00e9cut\u00e9 \u00e0 chaque fois que le composant sera rendu, ce qui peut entra\u00eener des probl\u00e8mes de performances.<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ code to run when the effect is triggered\n});<\/code><\/pre>\n<p>Dans React, comprendre le fonctionnement du rendu est un atout consid\u00e9rable car vous serez en mesure de conna\u00eetre l&rsquo;importance du tableau de d\u00e9pendances.<\/p>\n<h3>Comment fonctionne le rendu dans React ?<\/h3>\n<p>Dans React, le <a href=\"https:\/\/kinsta.com\/fr\/blog\/rendu-conditionnel-react\/\">rendu<\/a> g\u00e9n\u00e8re l&rsquo;interface utilisateur (UI) en fonction de l&rsquo;\u00e9tat actuel d&rsquo;un composant et de ses accessoires. Il existe diff\u00e9rents sc\u00e9narios dans lesquels le rendu se produit. Le rendu initial se produit lorsqu&rsquo;un composant est rendu ou mont\u00e9 pour la premi\u00e8re fois.<\/p>\n<p>Par ailleurs, un changement dans <code>state<\/code> ou <code>props<\/code> d&rsquo;un composant d\u00e9clenche un nouveau rendu pour s&rsquo;assurer que l&rsquo;interface utilisateur refl\u00e8te les valeurs mises \u00e0 jour. Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/clone-application-chatgpt\/\">applications React<\/a> sont construites avec une structure arborescente de composants, formant une hi\u00e9rarchie. React part du composant racine lors du rendu et effectue un rendu r\u00e9cursif de ses composants enfants.<\/p>\n<p>Cela signifie que tous les composants seront rendus si un changement se produit dans le composant racine. Il est important de noter qu&rsquo;appeler des effets de bord (qui sont la plupart du temps des fonctions co\u00fbteuses) \u00e0 chaque rendu peut \u00eatre co\u00fbteux. Pour optimiser les performances, vous pouvez utiliser le tableau de d\u00e9pendances dans le hook <code>useEffect<\/code> pour sp\u00e9cifier quand il doit \u00eatre d\u00e9clench\u00e9, limitant ainsi les re-rendus inutiles.<\/p>\n<h2>Utilisation avanc\u00e9e de useEffect : Nettoyage des effets de bord<\/h2>\n<p>Le hook <code>useEffect<\/code> nous permet d&rsquo;effectuer des effets de bord et fournit un m\u00e9canisme pour nettoyer ces effets de bord. Cela permet de s&rsquo;assurer que les ressources ou les abonnements cr\u00e9\u00e9s pendant l&rsquo;effet de bord sont correctement lib\u00e9r\u00e9s et d&rsquo;\u00e9viter les fuites de m\u00e9moire.<\/p>\n<p>Voyons comment vous pouvez nettoyer les effets de bord \u00e0 l&rsquo;aide du hook <code>useEffect<\/code>:<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ Perform some side effect\n\n  \/\/ Cleanup side effect\n  return () =&gt; {\n    \/\/ Cleanup tasks\n  };\n}, []);<\/code><\/pre>\n<p>Dans l&rsquo;extrait de code ci-dessus, la fonction de nettoyage est d\u00e9finie comme une valeur de retour dans le hook <code>useEffect<\/code>. Cette fonction est invoqu\u00e9e lorsque le composant est sur le point d&rsquo;\u00eatre d\u00e9mont\u00e9 ou avant un nouveau rendu. Elle vous permet de nettoyer les ressources ou les abonnements \u00e9tablis pendant l&rsquo;effet de bord.<\/p>\n<p>Voici quelques exemples d&rsquo;utilisation avanc\u00e9e du hook <code>useEffect<\/code> pour le nettoyage des effets de bord :<\/p>\n<h3>1. Nettoyage des intervalles<\/h3>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n    const interval = setInterval(() =&gt; {\n        \/\/ Perform some repeated action\n    }, 1000);\n    return () =&gt; {\n        clearInterval(interval); \/\/ Clean up the interval\n    };\n}, []);<\/code><\/pre>\n<p>Dans cet exemple, nous avons mis en place un intervalle qui effectue une action toutes les secondes. La fonction de nettoyage efface l&rsquo;intervalle pour \u00e9viter qu&rsquo;il ne s&rsquo;ex\u00e9cute apr\u00e8s le d\u00e9montage du composant.<\/p>\n<h3>2. Nettoyage des auditeurs d&rsquo;\u00e9v\u00e9nements<\/h3>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n    const handleClick = () =&gt; {\n        \/\/ Handle the click event\n    };\n\n    window.addEventListener('click', handleClick);\n\n    return () =&gt; {\n        window.removeEventListener('click', handleClick); \/\/ Clean up the event listener\n    };\n}, []);<\/code><\/pre>\n<p>Ici, nous cr\u00e9ons un \u00e9couteur d&rsquo;\u00e9v\u00e8nement pour l&rsquo;\u00e9v\u00e8nement click sur l&rsquo;objet window. La fonction de nettoyage supprime l&rsquo;\u00e9couteur d&rsquo;\u00e9v\u00e8nement pour \u00e9viter les fuites de m\u00e9moire et garantir un nettoyage correct.<\/p>\n<p>N&rsquo;oubliez pas que la fonction de nettoyage est facultative, mais qu&rsquo;il est fortement recommand\u00e9 de nettoyer toutes les ressources ou tous les abonnements afin de maintenir une application saine et efficace.<\/p>\n<h2>Utilisation du hook useEffect<\/h2>\n<p>Le hook <code>useEffect<\/code> vous permet d&rsquo;effectuer des t\u00e2ches qui impliquent une interaction avec des entit\u00e9s ou des API externes, telles que des API web comme localStorage ou des sources de donn\u00e9es externes.<\/p>\n<p>Explorons l&rsquo;utilisation du hook <code>useEffect<\/code> dans diff\u00e9rents sc\u00e9narios :<\/p>\n<h3>1. Travailler avec des API web (localStorage)<\/h3>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n \/\/ Storing data in localStorage\n  localStorage.setItem('key', 'value');\n  \/\/ Retrieving data from localStorage\n  const data = localStorage.getItem('key');\n  \/\/ Cleanup: Clearing localStorage when component unmount\n  return () =&gt; {\n    localStorage.removeItem('key');\n  };\n}, []);<\/code><\/pre>\n<p>Dans cet exemple, le hook <code>useEffect<\/code> est utilis\u00e9 pour stocker et r\u00e9cup\u00e9rer des donn\u00e9es dans le localStorage du navigateur. La fonction de nettoyage garantit que le localStorage est effac\u00e9 lorsque le composant est d\u00e9mont\u00e9 (ce n&rsquo;est pas toujours un bon cas d&rsquo;utilisation, car vous pouvez vouloir conserver les donn\u00e9es du localStorage jusqu&rsquo;\u00e0 ce que le navigateur soit actualis\u00e9).<\/p>\n<h3>2. R\u00e9cup\u00e9ration de donn\u00e9es \u00e0 partir d&rsquo;une API externe<\/h3>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ Fetching data from an external API\n  fetch('https:\/\/api.example.com\/data')\n    .then((response) =&gt; response.json())\n    .then((data) =&gt; {\n      \/\/ Do something with the data\n    });\n}, []);<\/code><\/pre>\n<p>Ici, le hook <code>useEffect<\/code> est utilis\u00e9 pour r\u00e9cup\u00e9rer des donn\u00e9es d&rsquo;une API externe. Les donn\u00e9es r\u00e9cup\u00e9r\u00e9es peuvent ensuite \u00eatre trait\u00e9es et utilis\u00e9es dans le composant. Il n&rsquo;est pas obligatoire d&rsquo;ajouter syst\u00e9matiquement une fonction de nettoyage.<\/p>\n<h3>Autres effets de bord populaires<\/h3>\n<p>Le hook <code>useEffect<\/code> peut \u00eatre utilis\u00e9 pour divers autres effets secondaires, tels que :<\/p>\n<h4>A. S&rsquo;abonner \u00e0 des \u00e9v\u00e9nements :<\/h4>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  window.addEventListener('scroll', handleScroll);\n  return () =&gt; {\n    window.removeEventListener('scroll', handleScroll);\n  };\n}, []);<\/code><\/pre>\n<h4>B. Modifier le titre du document :<\/h4>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  document.title = 'New Title';\n  return () =&gt; {\n    document.title = 'Previous Title';\n  };\n}, []);<\/code><\/pre>\n<h4>C. Gestion des minuteries :<\/h4>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  const timer = setInterval(() =&gt; {\n    \/\/ Do something repeatedly\n  }, 1000);\n  return () =&gt; {\n    clearInterval(timer);\n  };\n}, []);<\/code><\/pre>\n<h2>Erreurs courantes d&rsquo;useEffect et comment les \u00e9viter<\/h2>\n<p>Lorsque vous travaillez avec le hook <code>useEffect<\/code> dans React, il est possible de rencontrer des <a href=\"https:\/\/kinsta.com\/fr\/sujets\/erreurs-react\/\">erreurs<\/a> qui peuvent conduire \u00e0 un comportement inattendu ou \u00e0 des probl\u00e8mes de performance.<\/p>\n<p>Comprendre ces erreurs et savoir comment les \u00e9viter peut aider \u00e0 garantir une utilisation fluide et sans erreur de <code>useEffect<\/code>.<\/p>\n<p>Examinons quelques erreurs courantes de <code>useEffect<\/code> et leurs solutions :<\/p>\n<h3>1. Tableau de d\u00e9pendance manquant<\/h3>\n<p>Une erreur fr\u00e9quente est d&rsquo;oublier d&rsquo;inclure un <a href=\"https:\/\/kinsta.com\/fr\/blog\/react-hook-useeffect-has-a-missing-dependency\/\">tableau de d\u00e9pendances<\/a> comme deuxi\u00e8me argument du crochet <code>useEffect<\/code>.<\/p>\n<p>ESLint signalera toujours cette erreur comme un avertissement car elle peut entra\u00eener des comportements non souhait\u00e9s, tels qu&rsquo;un re-rendu excessif ou des donn\u00e9es p\u00e9rim\u00e9es.<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ Side effect code\n}); \/\/ Missing dependency array<\/code><\/pre>\n<p><strong>Solution :<\/strong> Fournissez toujours un tableau de d\u00e9pendances \u00e0 <code>useEffect<\/code>, m\u00eame s&rsquo;il est vide. Incluez toutes les variables ou valeurs dont l&rsquo;effet d\u00e9pend. Cela aide React \u00e0 d\u00e9terminer quand l&rsquo;effet doit \u00eatre ex\u00e9cut\u00e9 ou ignor\u00e9.<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  \/\/ Side effect code\n}, []); \/\/ Empty dependency array or with appropriate dependencies<\/code><\/pre>\n<h3>2. Tableau de d\u00e9pendances incorrect<\/h3>\n<p>Fournir un tableau de d\u00e9pendances incorrect peut \u00e9galement entra\u00eener des probl\u00e8mes. Si le tableau de d\u00e9pendances n&rsquo;est pas d\u00e9fini avec pr\u00e9cision, l&rsquo;effet peut ne pas s&rsquo;ex\u00e9cuter lorsque les d\u00e9pendances pr\u00e9vues changent.<\/p>\n<pre><code class=\"language-jsx\">const count = 5;\nconst counter = 0;\nuseEffect(() =&gt; {\n  \/\/ Side effect code that depends on 'count'\n  let answer = count + 15;\n}, [count]); \/\/ Incorrect dependency array<\/code><\/pre>\n<p><strong>Solution :<\/strong> Veillez \u00e0 inclure toutes les d\u00e9pendances n\u00e9cessaires dans le tableau de d\u00e9pendances. Si l&rsquo;effet d\u00e9pend de plusieurs variables, incluez-les toutes afin de d\u00e9clencher l&rsquo;effet lorsque l&rsquo;une des d\u00e9pendances change.<\/p>\n<pre><code class=\"language-jsx\">const count = 5;\nuseEffect(() =&gt; {\n  \/\/ Side effect code that depends on 'count'\n  let answer = count + 15;\n}, [count]); \/\/ Correct dependency array<\/code><\/pre>\n<h3>3. Boucles infinies<\/h3>\n<p>La cr\u00e9ation d&rsquo;une boucle infinie peut se produire lorsque l&rsquo;effet modifie un \u00e9tat ou un \u00e9l\u00e9ment qui d\u00e9pend \u00e9galement de l&rsquo;effet lui-m\u00eame. L&rsquo;effet est alors d\u00e9clench\u00e9 de mani\u00e8re r\u00e9p\u00e9t\u00e9e, ce qui entra\u00eene un re-rendu excessif et risque de bloquer l&rsquo;application.<\/p>\n<pre><code class=\"language-jsx\">const [count, setCount] = useState(0);\nuseEffect(() =&gt; {\n  setCount(count + 1); \/\/ Modifying the dependency 'count' inside the effect\n}, [count]); \/\/ Dependency array includes 'count'<\/code><\/pre>\n<p><strong>Solution :<\/strong> Assurez-vous que l&rsquo;effet ne modifie pas directement une d\u00e9pendance incluse dans son tableau de d\u00e9pendances. Cr\u00e9ez plut\u00f4t des variables distinctes ou utilisez d&rsquo;autres techniques de gestion d&rsquo;\u00e9tat pour g\u00e9rer les changements n\u00e9cessaires.<\/p>\n<pre><code class=\"language-jsx\">const [count, setCount] = useState(0);\nuseEffect(() =&gt; {\n  setCount((prevCount) =&gt; prevCount + 1); \/\/ Modifying the 'count' using a callback\n}, []); \/\/ You can safely remove the 'count' dependency<\/code><\/pre>\n<h3>4. Oubli de nettoyage<\/h3>\n<p>N\u00e9gliger le nettoyage des effets secondaires peut entra\u00eener des fuites de m\u00e9moire ou une consommation inutile de ressources. Ne pas nettoyer les auditeurs d&rsquo;\u00e9v\u00e8nements, les intervalles ou les abonnements peut entra\u00eener un comportement inattendu, notamment lorsque le composant est d\u00e9mont\u00e9.<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  const timer = setInterval(() =&gt; {\n    \/\/ Perform some action repeatedly\n  }, 1000);\n  \/\/ Missing cleanup\n  return () =&gt; {\n    clearInterval(timer); \/\/ Cleanup missing in the return statement\n  };\n}, []);<\/code><\/pre>\n<p><strong>Solution :<\/strong> Fournissez toujours une fonction de nettoyage dans l&rsquo;instruction de retour du hook <code>useEffect<\/code>.<\/p>\n<pre><code class=\"language-jsx\">useEffect(() =&gt; {\n  const timer = setInterval(() =&gt; {\n    \/\/ Perform some action repeatedly\n  }, 1000);\n  return () =&gt; {\n    clearInterval(timer); \/\/ Cleanup included in the return statement\n  };\n}, []);<\/code><\/pre>\n<p>En \u00e9tant conscient de ces erreurs courantes de <code>useEffect<\/code> et en suivant les solutions recommand\u00e9es, vous pouvez \u00e9viter les pi\u00e8ges potentiels et garantir l&rsquo;utilisation correcte et efficace du hook <code>useEffect<\/code> dans vos applications React.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Le hook <code>useEffect<\/code> de React est un outil puissant pour g\u00e9rer les effets de bord dans les composants de fonction. Maintenant que vous avez une meilleure compr\u00e9hension de <code>useEffect<\/code>, il est temps d&rsquo;appliquer vos connaissances et de donner vie \u00e0 vos applications React.<\/p>\n<p>Vous pouvez \u00e9galement faire tourner votre application React en production en la d\u00e9ployant sur l&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications de Kinsta<\/a> gratuitement !<\/p>\n<p><em>\u00c0 vous de jouer. Que pensez-vous du hook <code>useEffect<\/code> ? N&rsquo;h\u00e9sitez pas \u00e0 le partager avec nous dans la section des commentaires ci-dessous.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>React est l&rsquo;une des biblioth\u00e8ques JavaScript les plus populaires pour la construction d&rsquo;interfaces utilisateur. Lors de la construction de ces interfaces, vous pouvez avoir besoin d&rsquo;effectuer &#8230;<\/p>\n","protected":false},"author":287,"featured_media":70257,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1004],"class_list":["post-70256","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-react"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>D\u00e9mystifier le hook useEffect de React - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"D\u00e9mystifier le hook useEffect de React\" \/>\n<meta property=\"og:description\" content=\"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-22T07:57:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:42:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"D\u00e9mystifier le hook useEffect de React\",\"datePublished\":\"2023-06-22T07:57:11+00:00\",\"dateModified\":\"2025-10-01T19:42:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\"},\"wordCount\":1967,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\",\"name\":\"D\u00e9mystifier le hook useEffect de React - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg\",\"datePublished\":\"2023-06-22T07:57:11+00:00\",\"dateModified\":\"2025-10-01T19:42:40+00:00\",\"description\":\"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/react\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"D\u00e9mystifier le hook useEffect de React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"D\u00e9mystifier le hook useEffect de React - Kinsta\u00ae","description":"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/","og_locale":"fr_FR","og_type":"article","og_title":"D\u00e9mystifier le hook useEffect de React","og_description":"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.","og_url":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-06-22T07:57:11+00:00","article_modified_time":"2025-10-01T19:42:40+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Joel Olawanle","Dur\u00e9e de lecture estim\u00e9e":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"D\u00e9mystifier le hook useEffect de React","datePublished":"2023-06-22T07:57:11+00:00","dateModified":"2025-10-01T19:42:40+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/"},"wordCount":1967,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/","url":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/","name":"D\u00e9mystifier le hook useEffect de React - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg","datePublished":"2023-06-22T07:57:11+00:00","dateModified":"2025-10-01T19:42:40+00:00","description":"Le puissant hook useEffect de React vous permet de g\u00e9rer de mani\u00e8re transparente les effets de bord, comme la r\u00e9cup\u00e9ration de donn\u00e9es depuis une API ou la manipulation du DOM.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/06\/react-useeffect.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/react-useeffect\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"React","item":"https:\/\/kinsta.com\/fr\/sujets\/react\/"},{"@type":"ListItem","position":3,"name":"D\u00e9mystifier le hook useEffect de React"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/70256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=70256"}],"version-history":[{"count":4,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/70256\/revisions"}],"predecessor-version":[{"id":70280,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/70256\/revisions\/70280"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/70256\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/70257"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=70256"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=70256"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=70256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}