【发布时间】:2020-01-03 15:15:34
【问题描述】:
我正在从事的项目使用:
- react/react-dom@16.9.0
- @loadable/组件
- 样式化组件
- react-router-dom
应用程序呈现服务器端和客户端端。
我正在使用@loadable/component 以这种方式动态代码拆分。
路由器.tsx
import * as React from 'react'
import loadable from '@loadable/component'
import { Route, Switch } from 'react-router-dom'
const NotFound = loadable(() =>
import('../components/NotFound/NotFound' /* webpackChunkName: "notfound" */)
)
const routes = (
<Switch>
<Route component={NotFound} />
</Switch>
)
export default routes
加载页面时,控制台上出现此错误,页面似乎闪烁了一秒钟。
react-dom.development.js:546 Warning: Did not expect server HTML to contain a <div> in <main>.
当我检查双方(服务器/客户端)的输出时,它们相同。
当我像下面这样删除@loadable/component 时,它可以工作并且错误消失了。
router-without-loadable.tsx
import * as React from 'react'
import { Route, Switch } from 'react-router-dom'
import NotFound from '../components/NotFound/NotFound'
const routes = (
<Switch>
<Route component={NotFound} />
</Switch>
)
export default routes
似乎与 @loadable/component 有关,但我不是 100% 确定。
【问题讨论】:
-
@loadable用于 SSR,这意味着您的页面在服务器端编译并作为 HTML 发送到客户端 -
是的,HTML 不是发送到客户端,而是作为响应发送到浏览器。但是,是的,我的问题与动态导入有关。
标签: javascript reactjs react-router-dom server-side-rendering loadable-component