我正在考虑将 Gatsby-Image 用于我的下一个项目,并且一直在尝试使用它。
我让它在我的测试项目中工作,但后来我想出了一个用例,我想像使用常规<img src”image.png”>
标签一样使用来自 Gatsby 的标签。因此,我的问题是如何使 Gatsby 组件可重用?
import React from "react"
import { StaticQuery, graphql } from "gatsby"
import Img from "gatsby-image"
function renderImage({ file }) {
console.log({ file })
return <Img fluid={file.childImageSharp.fluid} />
}
// Stateless Image component which i guess will recieve src value as a prop?
// Returns a StaticQuery component with query prop and render prop. Query prop has the graphql query to recieve the images and render prop returns a renderImage function which in return, returns a Img component från Gatsby with set attributes.
const Image = () => (
<StaticQuery
query={graphql`
query {
file(relativePath: { eq: "gatsby-astronaut.png" }) {
childImageSharp {
fluid(maxWidth: 300) {
...GatsbyImageSharpFluid
}
}
}
}
`}
// render={data => <Img fluid={data.placeholderImage.childImageSharp.fluid} />}
render={renderImage}
/>
)
export default Image
我的最佳用例是向我的 Gatsby.config 文件中定义的 relativePath 发出动态请求,然后组合每个 Gatsby 中的 src props,并将其与我的资产文件中的所有图像匹配,然后显示它。你们中有人知道这是否可行吗?
我在文档中读到静态查询不能接受变量 - 只有页面。但我不希望我的图像与页面相关联——我想在任何我想要的地方使用这个组件——就像一个常规的 img 标签。
希望我已经说清楚了。如果您有任何问题,请提问。
这是一个例子:https : //codesandbox.io/s/py5n24wk27
预先感谢,埃里克