使用反应服务器端渲染,呈现的HTML是否仅在状态完全加载后才会发送到客户端?
例如,如果用户请求具有多个异步API调用的页面,那么客户端是否必须等待这些API调用在收到任何打包的HTML之前完成?
如果这是正确的,如果用户请求的页面缓慢运行API调用,用户是否可以留在空浏览器窗口?即服务器在向客户端发送响应之前等待API调用完成。
我已经在http://redux.js.org/docs/recipes/ServerRendering.html阅读了文档,但我不确定我是否正确地解释了它。有人可以帮我澄清一下吗?
答案 0 :(得分:1)
总之:不。 ReactDOMServer.renderToString
不支持开箱即用的异步调用。
您可以做的是预取数据并将其放入html然后将其发送回客户端,例如:
<script>
window._preFetchedData = {"somedata": {"post": {//...
</script>
因此,当页面发送到浏览器时,前端应该读取并加载preFetchedData
。
在我看来,React virtual-dom只为服务器端渲染问题提供了一半(1/3?)的解决方案。要实现完美服务器端呈现,数据流管理需要付出巨大努力,在许多情况下这是不值得的。