API: 服务端渲染
react-apollo
提供了一些实用的方法来帮助服务端渲染和 store 注水。要了解如何在应用中实现服务端渲染,请务必阅读服务端渲染的方法。以下仅仅是服务端渲染中所使用的方法的 API 参考,而不是教你如何设置的教程。
getDataFromTree(jsx)
|
|
此函数将遍历你的 React 树,以查找任何使用 graphql()
增强器的组件。它将找到那些查询组件,执行查询,并返回一个 promise,以便在所有查询已 resolve 时通知你。这个 promise 不会返回任何值。你将无法查看找到的查询返回的数据。
当使用 react-dom/server
的方法如 renderToString
或 renderToStaticMarkup
渲染模板时,在执行 getDataFromTree
后,Apollo 缓存将被启动,你的组件将使用缓存中已获取的数据进行渲染。你也可以选择使用 react-apollo
renderToStringWithData()
方法,该方法将调用此函数,然后调用 react-dom/server
的 renderToString
方法。
如果其中一个查询失败,promise 将不会 reject,直到所有查询都已 resolve 或 reject。这时,我们将使用一个属性为 error.queryErrors
的错误对象 reject 从 getDataFromTree
返回的 promise,该属性是我们执行的查询中所有错误的数组。这时,你再决定是否渲染树(如果是,错误的组件将处于加载状态),或者渲染一个错误页面并在客户端上完全重新渲染。
有关更多信息,请参阅服务端渲染的方法。
例:
|
|
renderToStringWithData(jsx)
|
|
这个函数会调用 getDataFromTree()
,当该函数返回的 promise 被 resolve 时,它将调用react-dom/server
的 renderToString
方法。
有关更多信息,请参阅 getDataFromTree()
或 服务器端渲染的方法文档。
例:
|
|