componentWillMount
est fait avant l'INITIAL render
d'un composant, et est utilisé pour évaluer les accessoires et faire toute logique supplémentaire basée sur eux (généralement pour mettre à jour également l'état), et en tant que tel peut être effectué sur le serveur afin d'obtenir le premier balisage rendu côté serveur .
componentDidMount
est effectuée APRÈS l'initiale render
lorsque le DOM a été mis à jour (mais surtout AVANT que cette mise à jour du DOM soit peinte sur le navigateur, vous permettant de faire toutes sortes d'interactions avancées avec le DOM lui-même). Cela ne peut bien sûr se produire que dans le navigateur lui-même et ne se produit donc pas dans le cadre du SSR, car le serveur ne peut générer que du balisage et non le DOM lui-même, cela se fait après qu'il a été envoyé au navigateur si vous utilisez SSR
Interactions avancées avec le DOM dites-vous? Whaaaat ?? ... Oui - à ce stade, car le DOM a été mis à jour (mais l'utilisateur n'a pas encore vu la mise à jour dans le navigateur), il est possible d'intercepter la peinture réelle à l'écran en utilisantwindow.requestAnimationFrame
et ensuite faire des choses comme mesurer le réel Les éléments DOM qui seront générés, sur lesquels vous pouvez effectuer d'autres changements d'état, super utiles par exemple pour animer à une hauteur d'un élément dont le contenu de longueur variable est inconnu (car vous pouvez maintenant mesurer le contenu et attribuer une hauteur à l'animation), ou pour éviter le flash des scénarios de contenu lors de certains changements d'état.
Soyez très prudent cependant pour protéger les changements d'état dans tout, componentDid...
car sinon, cela peut provoquer une boucle infinie car un changement d'état provoquera également un nouveau rendu, et par conséquent un autre componentDid...
et ainsi de suite.
componentXxxMount
, par exemple, AjaxwillMount
peut causer des problèmes.