Gatsby graphql 查询 GatsbyImage 使用项目中的本地图像
Gatsby graphql query for GatsbyImage to use a local image from project
我只想使用 GatsbyImage 组件的图像。
通常您使用 <img src='./img.jpg'/>
来完成。
GatsbyImage 是如何完成的,所以我可以使用 props 发送图像。
如果你想使用 GatsbyImage
,你需要提供额外的 GraphQL 节点数据,Gatsby 使用它的转换器和锐器推断这些数据。为此,您需要通过在 gatsby-config.js
:
中设置以下代码段来告诉 Gatsby 这些图像的位置。
{
resolve: `gatsby-source-filesystem`,
options: {
name: `componentImages`,
path: `${__dirname}/src/components`,
},
},
注意:您可以有多个 gatsby-source-filesystem
的实例
再次启动 gatsby develop
以刷新源后,您将在 GrahiQL 游乐场 (localhost:8000/___graphql
) 中看到可用的节点,您应该在其中测试您的查询,但它应该如下所示:
image: file(relativePath: {eq: "free-time.jpg"}) {
childImageSharp {
gatsbyImageData
}
}
已在您的 CodeSandbox 中测试并正常工作。
在npm init gatsby
之后,'src/images'
文件夹被创建,这是基本的根相对路径,默认设置在gatsby.config.js
]
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'images',
path: `./src/images/`,
}
}
所以把你的img.jpg放到images文件夹,然后用相对路径查询
const data = useStaticQuery(graphql`
{
file(relativePath: { eq: "free-time.jpg" }) {
childImageSharp {
gatsbyImageData
}
}
}
`);
并将其插入到 GatsbyImage
const img = getImage(data.file);
<GatsbyImage image={img} />
我只想使用 GatsbyImage 组件的图像。
通常您使用 <img src='./img.jpg'/>
来完成。
GatsbyImage 是如何完成的,所以我可以使用 props 发送图像。
如果你想使用 GatsbyImage
,你需要提供额外的 GraphQL 节点数据,Gatsby 使用它的转换器和锐器推断这些数据。为此,您需要通过在 gatsby-config.js
:
{
resolve: `gatsby-source-filesystem`,
options: {
name: `componentImages`,
path: `${__dirname}/src/components`,
},
},
注意:您可以有多个 gatsby-source-filesystem
再次启动 gatsby develop
以刷新源后,您将在 GrahiQL 游乐场 (localhost:8000/___graphql
) 中看到可用的节点,您应该在其中测试您的查询,但它应该如下所示:
image: file(relativePath: {eq: "free-time.jpg"}) {
childImageSharp {
gatsbyImageData
}
}
已在您的 CodeSandbox 中测试并正常工作。
在npm init gatsby
之后,'src/images'
文件夹被创建,这是基本的根相对路径,默认设置在gatsby.config.js
]
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'images',
path: `./src/images/`,
}
}
所以把你的img.jpg放到images文件夹,然后用相对路径查询
const data = useStaticQuery(graphql`
{
file(relativePath: { eq: "free-time.jpg" }) {
childImageSharp {
gatsbyImageData
}
}
}
`);
并将其插入到 GatsbyImage
const img = getImage(data.file);
<GatsbyImage image={img} />