【发布时间】:2023-02-08 02:15:07
【问题描述】:
我理解我们使用 Suspense 来标记边界。如果没有悬念,那就意味着渲染将在一次 pass 中完成,这与没有流式处理的 SSR 相同。
如果代码库中根本没有使用 Suspense,我们是否会从使用 renderToPipeableStream - 新流中获得任何好处?
另外,这是否意味着 renderToNodeStream 会做同样的事情?
【问题讨论】:
我理解我们使用 Suspense 来标记边界。如果没有悬念,那就意味着渲染将在一次 pass 中完成,这与没有流式处理的 SSR 相同。
如果代码库中根本没有使用 Suspense,我们是否会从使用 renderToPipeableStream - 新流中获得任何好处?
另外,这是否意味着 renderToNodeStream 会做同样的事情?
【问题讨论】:
如果您不使用 Suspense 组件,那么在 React 18 中使用 renderToPipeableStream() 没有任何好处。
但是,使用 renderToPipeableStream() 而不是 renderToNodeStream() 有一个主要好处,因为后者实际上正在折旧 - 它也不能很好地工作,因为它不能等待数据。
renderToNodeStream() 基本上比 renderToString() 更接近完整的 SSR,但还差得远。
这个 React 18 Github 公告很好地突出了一切。
https://github.com/reactwg/react-18/discussions/22
希望有帮助!
【讨论】: