如何使用Gatsby显示Contentul图像

时间:2018-04-24 17:02:43

标签: reactjs graphql gatsby

我正在尝试显示存储在Contentful上的单个图像。这是我获取网址和图片标题的查询:

+

我使用 gatsby-image 插件,但没有解释知道如何使用此查询来显示单个图像。

他们只用多个图像和一个节点来解释这种情况......

contentfulAsset(title: {eq: "kevin"}) {
  file {
    url
    fileName
  }
}

1 个答案:

答案 0 :(得分:4)

我的第一个建议是在开发时始终使用 GraphiQL 页面。它可以让您了解如何在组件上使用查询结果。

http://localhost:8000/___graphql

您的查询取决于您希望如何显示图像。

假设您已在 Contentful 上的myImage内容模型上存储了字段名称为Asset的图片。

使用HTML5 <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插件显示

如果您想利用gatsby-image插件,首先需要知道您是否要在查询中使用resolutionssizes子项。

有关详细信息,请参阅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
  }
}
  

注意:默认情况下,resolutionssizes质量设置为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