reactjs - react 16 : Warning: Expected server HTML to contain a matching <div> in <div> due to State

标签 reactjs isomorphic-javascript client-hints

我使用 SSR 时遇到以下错误

Warning: Expected server HTML to contain a matching <div> in <div>.

当检查组件安装时的浏览器宽度,然后设置组件的状态以呈现其移动版本时,问题出现在客户端。

但是服务器默认容器的桌面版本,因为它不知道浏览器宽度。

遇到这样的情况我该如何处理?我可以以某种方式检测服务器上的浏览器宽度并在发送到客户端之前渲染移动容器吗?

编辑:现在我决定在组件安装时渲染容器。这样,服务器端和客户端最初都不会呈现任何内容来阻止此错误。

我仍然愿意接受更好的解决方案

最佳答案

这将解决问题。

// Fix: Expected server HTML to contain a matching <a> in
const renderMethod = module.hot ? ReactDOM.render : ReactDOM.hydrate;
renderMethod(
  <BrowserRouter>
    <RoutersController data={data} routes={routes} />
  </BrowserRouter>,
  document.getElementById('root')
);

关于reactjs - react 16 : Warning: Expected server HTML to contain a matching <div> in <div> due to State,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865880/

相关文章:

reactjs - 有条件地禁用 React 中的选择选项

javascript - JSON 对象与窗口变量,用于使用 reactjs 传递服务器端呈现的初始状态

javascript - 类型错误 : Cannot read property of undefined with web-sockets

javascript - 谷歌分析如何检测安卓设备

javascript - React map 函数 - 随机返回一项

reactjs - Material-UI 自动完成不会在左键单击时选择

reactjs - Redux + typescript : how to implement `injectReducer` ?

javascript - 将服务器端渲染与客户端路由 react

html - 辅助功能:在小型设备上以模态显示内容,在大型设备上显示内联内容

xhtml - 移动设备分辨率(宽度、高度)屏幕尺寸标题