在 SSR 和动态 URL 中使用 Apollo 查询 (Next.js)

Query with Apollo in SSR and Dynamic URLs (Next.js)

我正在开发一个使用 [slug].js 之类的动态 URL 的项目,我想做的是:当有人访问某些 url 域时。com/my-post 我的页面应该在 graphql 端点查询可用的 slug(包含 SEO 元标记等数据),如果 url 存在于我的数据库中则加载页面。

我正在使用 SSR、apollo hooks 等

我的问题是:在生产环境中,当有人在 Facebook 上分享 url 或类似内容时,url(域。com/my-post)上的元标记将是空的(在查询查找可用的 slug 之前)或在元标记和内容被填满之后?考虑到当我使用 apollo 的 useQuery 时,我需要 return 一些东西来处理该查询的加载和错误。我想当用户访问 url 时会显示一条 "loading" 消息。

My question is: on production when someone share that url on facebook or things like that the metatags on that url (domain.com/my-post) will be the empty ones (before query looks for available slugs) or after the metatags and contents was full filled?

这取决于您在哪里请求 slug。 如果您在服务器端发出请求(例如在 getInitialProps 内),页面将在预呈现之前等待获取数据,这意味着当页面呈现时,它将使用元标记呈现。

如果您正在使用 with-apollo 示例,那么它应该 render server side 显然只有当您在 pages 中使用 HOC 时,否则如果您在组件树中更深入地导入 HOC,getInitialProps 将被忽略(因为它仅在页面中有效)