【发布时间】:2017-10-04 08:54:41
【问题描述】:
我现在遇到了 React SSR 的问题。 基本上我正在构建一个通用的 React 应用程序,在从浏览器发送初始请求后,服务器应该准备所有必要的数据并调用 renderToString() 将呈现的 HTML 传递给用户。
在我的服务器端代码中,我有类似的内容:
fetchInitialData().then((response) => renderToString(...))
如您所见,服务器将等待 fetchInitialData 完成,然后它可以发送呈现的 HTML。但是,这里的问题是 fetchInitialData 需要很长时间才能完成,这意味着在客户端用户将看到一个空白屏幕,直到服务器完成初始 API 调用。
我的问题是服务器有没有办法向用户发送加载页面,当它完成 API 调用时,用实际数据更新加载屏幕?
====== 我能想到的一种解决方案是让服务器直接将加载页面发送给用户,然后用户在 componentDidMount() 中调用该 API 有更好的请指教
【问题讨论】:
-
您可以创建预期结果的简化(淡入淡出)HTML 内容(仅针对适合您屏幕的部分)并将该内容硬编码到您的页面中。获取后,您可以在一个替换操作中将虚假内容替换为真实数据。
-
@JeroenHeier 这就是我想要做的。但是服务器如何用实际的内容替换硬编码的内容呢?我的想法是,在服务器调用 res.send(html) 之后,它不再控制该部分
-
也许this可以帮助你。
标签: javascript reactjs server-side-rendering