reactjs - 在 SSR 和动态 URL 中使用 Apollo 进行查询 (Next.js)
问题描述
我正在开发一个使用像 [slug].js 这样的动态 URL 的项目,我想要做的是:当有人访问一些像 domain.com/my-post 这样的 URL 时,我的页面应该查询可用的 slug(包含像SEO 元标记)在 graphql 端点中,如果 url 存在于我的数据库中,则加载页面。
我正在使用 SSR、apollo hooks 等。
我的问题是:在生产中,当有人在 facebook 上共享该 url 或类似该 url 上的元标记(domain.com/my-post)将是空的(在查询查找可用的 slug 之前)或在元标记和内容之后满了吗?考虑到当我使用来自 apollo 的 useQuery 时,我需要返回一些东西来处理来自该查询的加载和错误。当用户访问该网址时,我会显示一条“正在加载”消息。
解决方案
我的问题是:在生产中,当有人在 facebook 上共享该 url 或类似的东西时,该 url (domain.com/my-post) 上的元标记将是空的 (在查询查找可用的 slug 之前) 或在元标记和内容之后满了吗?
这取决于您在哪里提出请求。如果您让请求服务器端(例如 inside getInitialProps
)页面在预渲染之前等待获取数据,这意味着当页面渲染时,它将使用元标记进行渲染。
如果您遵循 with-apollo 示例,它应该只在您使用 HOC 时才明显呈现服务器端pages
,否则如果您在组件树中更深入地导入 HOC,getInitialProps
则将被忽略(因为它仅在页面中有效)
推荐阅读
- reactjs - 开玩笑:单击按钮在函数内测试模拟调度
- javascript - 在 react js 中使用 materialui-daterange-picker 包访问 startDate 和 endDate 时遇到问题
- javascript - 如何按特定字符串搜索 Google 表格?
- netty - 如何使用 Netty 发送多响应数据?(第 2 部分)
- git - Git Flow:如何删除功能
- ios - 从具有复杂类型和 DocumentReferences 的 Firebase 文档创建对象
- ruby-on-rails - 在将我的 Rails 版本从 Heroku 的 6.1.3 更改为 6.0.3.5 之后。运行 Rails S 后出现运行时错误
- flutter - 如何在对话框中添加图像?
- mongodb - Mongodb 聚合失败:“FieldPath 字段名称可能不以'$'开头。”
- c# - 在覆盖 GetHashCode() 时,是否还应考虑基类的 HashCode?