À partir de la ReactDOMServer docs (l'emphase est mienne):
Si vous appelez ReactDOM.hydrate()
sur un nœud qui possède déjà ce serveur-rendu de balisage, de Réagir à préserver et seulement à joindre les gestionnaires d'événements, vous permettant d'avoir une très performant de la première charge de l'expérience.
Le texte en gras est la principale différence. render
peut changer votre nœud si il y a une différence entre la première DOM et DOM actuel. hydrate
fixez seulement des gestionnaires d'événements.
À partir de l' Github question qui introduit hydrate
en tant que distincte de l'API:
Si c'est votre première DOM
<div id="container"><div class="spinner">Loading...</div></div>
et puis appelez ReactDOM.render(<div class="myapp"><span>App</span></div>, document.getElementById('container'))
qui ont l'intention de le faire côté client seulement render (pas d'hydratation).
Ensuite, vous vous retrouvez avec des <div id="container"><div class="spinner"><span>App</span></div></div>
. Parce que nous n'avons pas de patch les attributs.
Juste pour info la raison pour laquelle ils n'ont pas de patch des attributs est
... Ce serait vraiment lent à s'hydrater dans les conditions normales de l'hydratation de la mode et de ralentir initiale rendre dans une situation de non-SSR arbre.