Réagir 16: Avertissement: Attendu serveur HTML pour contenir une correspondance <div> dans <body>
Depuis la mise à jour de Réagir 16 je reçois ce message d'erreur:
warning.js:33 Warning: Expected server HTML to contain a matching <div> in <body>.
Ce qui est généralement à l'origine de ce message d'erreur et comment peut-il être fixé?
- Pourriez-vous montrer un peu de code?
- Si vous voyez quelque chose d'inattendu après la mise à niveau, veuillez soumettre des questions et fournir des exemples. Sinon nous n'avons aucun moyen de savoir quelque chose est cassé. Merci!
- Vous êtes de droite. Ceci s'est avéré être un problème non lié à Réagir, mais depuis v16 il ne parvient pas à s'hydrater lorsqu'un script côté client, la balise est injecté (Browsersync) Réagir lorsqu'un composant est attendu, donnant l'erreur ci-dessus. Cela ne semble pas être le cas dans de Réagir v15. Fixé par le déplacement de la insérés balise de script à la fin du corps.
- pouvez-vous expliquer plus en détail? ce script ne vous déplacez vers la fin du corps. Je suis face à cette mise en garde maintenant.
- Avez-vous résolu ce problème ?
- toute solution pour cela???
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
ReactDOM.hydrate
pour démarrer l'application web, vous voyez cet avertissement.Si votre application n'utilise pas de rendu côté serveur (
ssr
), veuillez utiliserReactDOM.render
pour commencer.suppressHydrationWarning={true}
prop peut également être utilisé sur le rendu d'élément. Cependant, comme la documentation de points, cet accessoire doit être utilisé à peine. La meilleure solution est d'utiliserhydrate()
ourender()
de façon appropriée: reactjs.org/docs/react-dom.html#hydrateSi votre code HTML est comme
vous pouvez obtenir cette erreur.
Pour contourner ce problème, utilisez le <tbody> tag
Ne pas oublier de fermer la balise(s)!
Ce qui semble être à cause de Browsersync l'insertion d'une balise script dans le corps sur le côté client qui n'existe pas sur le côté serveur. Ainsi Réagir ne parvient pas à joindre le serveur de rendu.