反应服务器端渲染是否等待异步调用完成?

时间:2016-12-09 00:51:55

标签: javascript reactjs serverside-rendering

使用反应服务器端渲染,呈现的HTML是否仅在状态完全加载后才会发送到客户端?

例如,如果用户请求具有多个异步API调用的页面,那么客户端是否必须等待这些API调用在收到任何打包的HTML之前完成?

如果这是正确的,如果用户请求的页面缓慢运行API调用,用户是否可以留在空浏览器窗口?即服务器在向客户端发送响应之前等待API调用完成。

我已经在http://redux.js.org/docs/recipes/ServerRendering.html阅读了文档,但我不确定我是否正确地解释了它。有人可以帮我澄清一下吗?

1 个答案:

答案 0 :(得分:1)

总之:不。 ReactDOMServer.renderToString不支持开箱即用的异步调用。

您可以做的是预取数据并将其放入html然后将其发送回客户端,例如:

<script>
   window._preFetchedData = {"somedata": {"post": {//...
</script>

因此,当页面发送到浏览器时,前端应该读取并加载preFetchedData

在我看来,React virtual-dom只为服务器端渲染问题提供了一半(1/3?)的解决方案。要实现完美服务器端呈现,数据流管理需要付出巨大努力,在许多情况下这是不值得的。