【发布时间】:2017-10-21 17:13:40
【问题描述】:
我在使用 SSR 时遇到以下错误
Warning: Expected server HTML to contain a matching <div> in <div>.
问题出在客户端检查组件装载时的浏览器宽度,然后将组件的状态设置为呈现它的移动版本。
但服务器默认容器的桌面版本,因为它不知道浏览器宽度。
我该如何处理这种情况?我可以在发送到客户端之前以某种方式检测服务器上的浏览器宽度并渲染移动容器吗?
编辑:现在我决定在组件安装时渲染容器。这样一来,服务器端和客户端都不会渲染任何东西来阻止这个错误。
我仍然愿意接受更好的解决方案
【问题讨论】:
-
与stackoverflow.com/questions/46443652/… 重复。确保您使用
React.hydrate()方法是因为您使用的是SSR。如果不使用React.render()。您还可以在渲染元素上使用suppressHydrationWarning={true}属性。但不要过度使用它。
标签: reactjs isomorphic-javascript client-hints