next.js 中的 apollo-client 与 `next-with-apollo` VS next.js 文档常见问题解答中显示的方法(不使用 `getDataFromTree`)
Posted
技术标签:
【中文标题】next.js 中的 apollo-client 与 `next-with-apollo` VS next.js 文档常见问题解答中显示的方法(不使用 `getDataFromTree`)【英文标题】:apollo-client in next.js with `next-with-apollo` VS the approach shown in next.js docs FAQ (no use of `getDataFromTree`) 【发布时间】:2021-10-21 04:36:12 【问题描述】:在next-with-apollo
npm 库和the approach shown in next.js docs 中选择的“apollo-client in next.js”方法的对比。
next.js 为 apollo 客户端选择的方法链接:https://github.com/vercel/next.js/blob/canary/examples/with-apollo/lib/apolloClient.js
In next.js doc approach:
next-with-apollo 未使用第三方库 没有使用 get-data-from-tree 此外,我发现这种方法在 next.js 中对客户端重新渲染和 apollo-client 的 s-s-r 的内部工作更有意义和优雅。我非常喜欢这个next-with-apollo
方法的一些缺点
看到很多人都在使用next-with-apollo
,而很少看到approach shown in next.js docs 的用法让我感到非常好奇?我很好奇 next.js 文档中的方法是否有任何缺点(我强烈认为没有缺点)?
那么客户端数据获取和服务器数据获取哪个更好以同时支持 CSR 和 SRR?
【问题讨论】:
【参考方案1】:我通过在 next.js 社区发帖找到了答案:
这里是:
next.js doc's apollo examples 避免使用 getDataFromTree,因为它会遍历反应树两次以触发所有查询并随后收集它们的结果。
在next.js doc's apollo examples 上使用该方法的缺点是由于您不使用
getDataFromTree
,因此您无法知道您的内部组件正在使用哪些查询。因此,您需要记住在getStaticProps
/getServerSideProps
上预取所需的所有内容并匹配完全相同的查询/变量建议使用next.js doc's apollo examples 方式而不是
getInitialProps
,所以我会一直使用它们,除非有一些非常具体的理由不这样做
【讨论】:
以上是关于next.js 中的 apollo-client 与 `next-with-apollo` VS next.js 文档常见问题解答中显示的方法(不使用 `getDataFromTree`)的主要内容,如果未能解决你的问题,请参考以下文章
nodejs/vanilla 中的 Apollo-client 未触发订阅