javascript - 什么是 gatsbyContentfulFluid?
问题描述
我正在学习 Gatsby 和 GraphQL 作为新手并关注这篇文章 https://ibaslogic.com/gatsby-with-contentful-cms/
它有这个代码:
export const query = graphql`
query($slug: String!) {
contentfulBlogPost(slug: { eq: $slug }) {
title
publishedDate(formatString: "Do MMMM, YYYY")
featuredImage {
fluid(maxWidth: 750) {
...GatsbyContentfulFluid
}
}
}
}
`
我得到了一切,但没有得到。..GatsbyContentfulFluid
在我的 GraphQL 查询服务器上。有人请解释一下...GatsbyContentfulFluid
是什么?为什么我们将它与扩展运算符一起使用?在创建内容数据时我是否错过了一些东西,这就是为什么我没有进入...GatsbyContentfulFluid
我的 GQL 查询游乐场?
解决方案
它不是我们在 JavaScript 中所知道的扩展运算符,在 GraphQL 中代表查询片段。
片段是一种使用可重用单元查询一组字段的方法。来自GraphQL 文档:
假设我们的应用中有一个相对复杂的页面,可以让我们并排查看两个英雄以及他们的朋友。您可以想象这样的查询很快就会变得复杂,因为我们需要至少重复一次字段 - 比较的每一侧都有一个。
这就是 GraphQL 包含称为片段的可重用单元的原因。片段让您可以构建字段集,然后将它们包含在您需要的查询中。这是一个如何使用片段解决上述情况的示例:
在您的情况下,片段由提供gatsby-source-contentful
并且基本上是从 Contentful 查询流体资产,就像您在使用gatsby-image
本地文件时通常所做的那样。
换句话说,使用...GatsbyContentfulFluid
片段,您可以从内容资产中获取必填字段,从而允许您gatsby-image
在资产中使用 a。
由于 GraphiQL 的限制,片段在 GraphQL 游乐场中不可用:
请注意,由于 GraphiQL 的限制,您目前无法在 GraphiQL IDE 中使用这些片段。
因此,您可以使用片段(确实应该),但您需要直接检查代码中获取的数据(通过console.logs
或通过调试断点),因为它们在 GraphQL 游乐场中不可用。
推荐阅读
- spring - 在 Spring Data 中将 ObjectId 转换为字符串
- mysql - S1000 仅在 Intellij 中关闭 ResultSet 后不允许操作
- javascript - 将 jQuery.ajax() 替换为 fetch() 到 Go REST API 端点 - 空负载
- rest - 请求的资源上不存在“Access-Control-Allow-Origin”标头。在 VPN 上
- python - 你如何在 seaborn 中创建一个带有预先计算的平均值、中位数、百分位数等值的箱线图?
- sqlite - 2 在 sqlite 中加入查询
- node.js - 如何使用仅使用电子邮件的 passport.js 对用户进行身份验证?
- jquery - 使用 jquery 验证空输入字段
- java - 性能:将字符串值与类别进行比较/切换
- ruby - Ruby 可以识别同一个单词的不同拼写吗?