我正在使用服务器端渲染和 Webpack 2.2.0 的延迟加载使用import()
方法,并且babel-plugin-transform-ensure-ignore
仅用于服务器端,一切都运行没有错误并且完美地工作,除了一件事。当页面加载时,我可以看到服务器端呈现,但是当 webpack 调用我的动态组件时,所有页面都会再次呈现,这对用户是可见的。我需要知道如何处理这些问题。我看到时找到了,我的第一行是
<div data-reactroot="" data-reactid="1" data-react-checksum="-1269702275">
但是当我的延迟加载的组件被解析和执行时,我的react根元素的整个内容被删除并再次呈现,我的第一个元素是 <div data-reactroot>
希望可以有人帮帮我。
提前致谢!
笔记
没有关于校验和的react警告。
更新 2/4/2017
这是我的应用标记
<div id="app">
<div>
<%- body %>
</div>
</div>
带有 id 的 divapp
是我的react应用程序容器
更新 3/4/2017
在我将标记更改为
<div id="app"><%- body %></div>
终于对客户端找到的校验和做出react,但我收到了这个错误。
React 尝试在容器中重用标记,但校验和无效。这通常意味着您正在使用服务器渲染并且服务器上生成的标记不是客户端所期望的。React 注入了新的标记来补偿哪些有效,但您已经失去了服务器渲染的许多好处。相反,找出为什么在客户端或服务器上生成的标记不同:
(client) <!-- react-empty: 1 -
(server) <div data-reactroot="
我的客户端根元素是
<Provider store={store}>
<Router history={history} routes={routes} onUpdate={() => window.scrollTo(0, 0)}/>
</Provider>
服务器是
<Provider store={store}>
<RouterContext {...renderProps} />
</Provider>
我认为应该生成相同的代码!