Puis-je appeler les Api dans componentWillMount à Réagir?

Je travaille à réagir pendant une durée de 1 an. La convention qui nous suivent, c'est de faire un appel d'API dans componentDidMount, de récupérer les données et setState après les données de la est venu. Cela permettra d'assurer que le composant a monté et réglage de l'etat sera la cause d'une re-rendre le composant, mais je veux savoir pourquoi on ne peut pas setState dans componentWillMount ou constructor

La documentation officielle dit que :

componentWillMount() est appelée juste avant le montage se produit. Il
est appelé avant que le render(), par conséquent, la création de l'état dans cette méthode
ne pas déclencher un nouveau rendu. Éviter d'introduire des effets secondaires ou des
les abonnements dans cette méthode.

il dit setting state in this method will not trigger a re-rendering, que je ne veux pas tout en faisant un appel d'API. Si je suis en mesure d'obtenir les données et en mesure de mettre en l'état (en supposant que les appels d'API sont vraiment rapide) dans componentWillMount ou dans constructor et les données sont présentes dans le premier rendu, pourquoi voudrais-je un nouveau rendu à tous?

et si l'appel d'API est lent, alors setState sera async et componentWillMount a déjà retourné alors je vais être en mesure de setState et un nouveau rendu devrait se produire.

Dans l'ensemble, je suis assez confus pourquoi nous ne devrions pas faire des appels de l'API dans le constructeur ou componentWillMount. Quelqu'un peut-il vraiment m'aider à comprendre comment réagir fonctionne dans ce cas?

  • Faire les appels de l'API dans componentWillMount si vous avez besoin qui n'est pas une mauvaise idée, mais il n'est pas possible d'avoir la réponse de l'API et de l'ensemble approprié de l'état avant la première de rendu va être appelé.
  • si votre API passe par une nouvelle mise en mémoire cache couche, vous pouvez être en mesure d'obtenir une mise en cache le résultat de votre requête synchrone.
  • Related post ici.
InformationsquelleAutor Ajay Gaur | 2017-04-01