Réglage de l'état sur componentDidMount()
Je sais que c'est un anti-modèle pour définir l'état sur componentDidMount
et un état doit être établi sur la componentWillMount
mais supposons que je veux régler la longueur de la nombre de li
balises comme un état. Dans ce cas, je ne peux pas définir l'état sur componentWillMount
depuis le li
balises pourraient ne pas avoir été montés au cours de cette phase. Donc, ce que devrait être la meilleure option ici? Ça va être beau si je définir l'état sur componentDidMount
?
- avez-vous rendu le
li
balises basé sur quelques accessoires (ou les données)? Pourriez-vous utiliserdata.length
? - il suffit de le mettre tout simplement. dire que j'ai 4
li
étiquettes et je veux obtenir le nombre d'entre eux de sorte que monmaxNumber
de l'état devrait être de 4. cependant, je ne le rendu de lali
balises basé sur quelques accessoires (ou des données). - Ensuite utiliser les données des accessoires dans
getInitialState()
pour calculer le max, et le mettre dans cet état. Il ne semble pas y avoir un besoin d'attendre pour le composant à être monté. - qu'en est asynchrone de données?
Vous devez vous connecter pour publier un commentaire.
Il n'est pas un anti-modèle pour appeler
setState
danscomponentDidMount
. En fait, ReactJS fournit un exemple de cela dans leur documentation:Exemple De La Doc
setState
est fait dans une fonction de rappel ici - c'est un peu un scénario différentcomponentDidMount
va déclencher le re-rendu, mais il n'y a aucune mention d'une mauvaise pratique.isMounted
est obsolète, et de l'utiliser pour configurer le composant de l'état est considéré comme un anti-modèle. réglage de l'etat à traverscomponentDidMount
n'est pas considéré comme un anti-modèle.setState
après un appel asynchrone?Selon la Réagir la Documentation, il est parfaitement OK pour appeler
setState()
de l'intérieur de lacomponentDidMount()
fonction.Il sera la cause de
render()
d'être appelé deux fois, ce qui est moins efficace que de l'appeler une fois, mais d'autres que c'est très bien.Vous pouvez trouver de la documentation ici:
https://reactjs.org/docs/react-component.html
Voici l'extrait de la documentation: