我想知道它是如何呈现服务器端的最佳方式(不在客户端上呈现)并处理来自异步查询的状态更改 .
理想示例:
-
服务器获取生成HTML的请求
-
服务器'requires'一个反应组件,传递一些道具
-
react组件在服务器中呈现,但它必须执行Ajax / Socket查询才能获得一些信息 . 事件已发送,响应将在稍后发布 .
-
react组件改变状态,改变输出
-
生成的HMTL已准备就绪,并且具有最新的状态更改 .
这里发生的是 ReactDOM.renderToStaticMarkup()
,正如预期的那样,不等待组件完成状态更改(在这种情况下,等待数据并重新渲染) .
To clarify:
这里没有客户,这不是典型的SSR . 我只需要服务器上的完整HTML,以便稍后我可以做其他操作 . 这里的问题是如何等待我在客户端上使用的异步调用和 use the same component (它有状态和一些setStates) .
我只是假设只有这样才能拥有只接收道具的无状态组件(先前执行所有套接字处理并将数据传递给每个组件) . 现在组件是简单的React,没有涉及Redux(这就是为什么它们不是无状态的) .
还有其他想法/做法吗?
谢谢!
1 回答
如果's no client involved, then whatever happens, you'll需要在渲染之前等待所有数据加载 .
如果可能的话,我建议将所有异步工作移到组件树之外 . 然后将它传递给根组件,以便在调用render时分发给子组件(通过props) .
如果您也想在客户端上使用相同的组件,那么您需要做的就是确保您的
createAsyncState
等效组件也适用于浏览器 .