According to reactjs.org, componentWillMount will not be supported in the future. https://reactjs.org/docs/react-component.html#unsafe_componentwillmount
Il n'est plus nécessaire d'utiliser componentWillMount.
Si vous souhaitez faire quelque chose avant que le composant ne soit monté, faites-le simplement dans le constructeur().
Si vous voulez effectuer des requêtes réseau, ne le faites pas dans componentWillMount. Cela pourrait entraîner des bugs inattendus.
Les requêtes réseau peuvent être effectuées dans componentDidMount.
J'espère que cela vous aidera.
mis à jour le 08/03/2019
La raison pour laquelle vous demandez componentWillMount est probablement parce que vous souhaitez initialiser l'état avant le rendu.
Faites-le simplement dans useState.
const helloWorld=()=>{
const [value,setValue]=useState(0) //initialisez votre état ici
return {value}
}
export default helloWorld;
Ou peut-être que vous souhaitez exécuter une fonction dans componentWillMount, par exemple, si votre code original ressemble à ceci :
componentWillMount(){
console.log('componentWillMount')
}
Avec les hooks, tout ce que vous avez à faire est de supprimer la méthode de cycle de vie :
const hookComponent=()=>{
console.log('componentWillMount')
return you have transfered componeWillMount from class component into hook
}
Je souhaite ajouter quelque chose à la première réponse concernant useEffect.
useEffect(()=>{})
useEffect s'exécute à chaque rendu, c'est une combinaison de componentDidUpdate, componentDidMount et componentWillUnmount.
useEffect(()=>{},[])
Si nous ajoutons un tableau vide dans useEffect, cela s'exécute juste lorsque le composant est monté. C'est parce que useEffect comparera le tableau que vous lui aurez passé. Ainsi, il n'est pas nécessaire que ce soit un tableau vide. Il peut s'agir d'un tableau qui ne change pas. Par exemple, cela peut être [1,2,3] ou ['1,2']. useEffect s'exécute toujours uniquement lorsque le composant est monté.
À vous de décider si vous voulez qu'il s'exécute une seule fois ou à chaque rendu. Ce n'est pas dangereux si vous oubliez d'ajouter un tableau tant que vous savez ce que vous faites.
J'ai créé un exemple d'utilisation des hooks. Veuillez le consulter.
https://codesandbox.io/s/kw6xj153wr
mis à jour le 21/08/2019
Cela fait un moment que j'ai écrit la réponse ci-dessus. Il y a quelque chose sur lequel je pense que vous devriez prêter attention. Lorsque vous utilisez
useEffect(()=>{},[])
Lorsque react compare les valeurs que vous avez passées au tableau [], il utilise Object.is()
pour comparer. Si vous lui passez un objet, comme
useEffect(()=>{},[{name:'Tom'}])
C'est exactement la même chose que :
useEffect(()=>{})
Cela se rechargera à chaque fois parce que lorsque Object.is()
compare un objet, il compare sa référence, pas la valeur elle-même. C'est la même raison pour laquelle {}==={} retourne false car leurs références sont différentes. Si vous souhaitez toujours comparer l'objet lui-même et non la référence, vous pouvez faire quelque chose comme ceci :
useEffect(()=>{},[JSON.stringify({name:'Tom'})])
Mise à jour du 7/09/2021 :
Quelques mises à jour concernant la dépendance :
En règle générale, si vous utilisez une fonction ou un objet comme dépendance, le composant se réexécutera toujours. Mais react vous fournit déjà la solution : useCallback et useMemo
useCallback permet de mémoriser une fonction. useMemo permet de mémoriser un objet.
Consultez cet article :
https://javascript.plainenglish.io/5-useeffect-infinite-loop-patterns-2dc9d45a253f