2

我正在构建一个用于反应的服务器端渲染实用程序。我没有使用ReactDOMServer及其相关的renderToString方法。相反,我将应用程序渲染到一个轻量级的服务器端 DOM。单个组件可以异步加载数据(通过 AJAX、setTimeout 等),当所有的承诺都解决后,我将最终的 HTML 字符串发送到浏览器。异步数据存储在一个名为INLINE_CACHE供客户端使用的 JavaScript 变量中。这部分工作完美。

在客户端,应用程序组件安装到文档。当子组件去加载数据时,我的数据控制器可以看到INLINE_CACHE并立即解决承诺。这部分也有效

当每个承诺都得到解决时,我setState会使用触发重新渲染的数据进行调用。我的问题是,即使承诺立即得到解决,它们仍然按照 A+ 规范异步解决。这意味着初始渲染没有它需要的所有数据。片刻之后(下一个刻度,如果你愿意的话),数据就在那里并且发生了重新渲染。但是由于初始渲染与服务器的现有标记(以及相关的校验和)不匹配,因此反应抱怨......理所当然地如此

我需要做的是以某种方式在分离的 DOM 节点(或仅虚拟 DOM)中呈现应用程序组件,等待所有承诺解决,然后将节点安装到文档。目标是 react 将尝试重用从服务器呈现的现有标记。我知道如何生成校验和等等——这不是问题。我只需要做出反应,在内存中渲染我的应用程序,直到我告诉它安装到真正的 DOM 上——此时会发生差异。React 有可能吗?

4

0 回答 0