我正在尝试显示存储在Contentful上的单个图像。这是我获取网址和图片标题的查询:
+
我使用 gatsby-image 插件,但没有解释知道如何使用此查询来显示单个图像。
他们只用多个图像和一个节点来解释这种情况......
contentfulAsset(title: {eq: "kevin"}) {
file {
url
fileName
}
}
答案 0 :(得分:4)
我的第一个建议是在开发时始终使用 GraphiQL 页面。它可以让您了解如何在组件上使用查询结果。
http://localhost:8000/___graphql
您的查询取决于您希望如何显示图像。
假设您已在 Contentful 上的myImage
内容模型上存储了字段名称为Asset
的图片。
<img />
代码如果您想使用简单的<img />
代码
contentfulAsset(title: { eq: "kevin"}}) {
title
file {
url
}
}
// ...
const MyComponent = props => {
const myImage = props.data.contentfulAsset;
return <img src={myImage.file.url} alt={myImage.title} />
}
如果您想利用gatsby-image
插件,首先需要知道您是否要在查询中使用resolutions
或sizes
子项。
有关详细信息,请参阅gatsby-image documentation。
然后,您可以使用gatsby-source-contentful
提供的查询片段。
请参阅https://www.gatsbyjs.org/packages/gatsby-image/#gatsby-source-contentful
因此,我们希望在加载时以Webp
格式显示带有模糊效果的自适应图像:
contentfulAsset(title: { eq: "kevin"}}) {
title
sizes(quality: 100) {
...GatsbyContentfulSizes_withWebp
}
}
注意:默认情况下,
resolutions
和sizes
质量设置为50.这就是我在此查询中将其设置为100的原因
const MyComponent = props => {
const myImage = props.data.contentfulAsset;
return <Img sizes={myImage.sizes} alt={myImage.title} />
}
与大多数官方Gatsby插件一样,您可以在GitHub存储库的
examples
文件夹中找到一个非常好的示例:https://github.com/gatsbyjs/gatsby/tree/master/examples/using-contentful