在 Gatsby 中使用 JSON 变量匹配查询图像
Matching query images with JSON variable in Gatsby
所以,我有一个 JSON 文件,其中包含我正在拉入我的 React 项目的信息。其中一个字段是图像关键字。我想用它来调用可以转储促销图像的“显示”文件夹中的图像。
thisYear.json
{
"title": "Rope",
"author": "Patrick Hamilton",
"image": "rope",
},{
"title": "I Hate Hamlet",
"author": "Paul Rudnick",
"image": "iHateHamlet",
}
]
我做了一个查询,将图像从所说的“显示”文件夹抓取到 jsx 文件
{
allFile(filter: {relativeDirectory: {eq: "shows"}}) {
edges {
node {
id
name
childImageSharp {
gatsbyImageData(placeholder: DOMINANT_COLOR)
}
}
}
}
}
我尝试编写一些比较名称属性的函数,但我似乎无法编写任何有效的函数。我在这里没有掌握任何东西,我只是不知道它是什么。
在我映射 JSON 文件并与查询数据 imageData 进行比较时,传入了 showImage。控制台日志显示正在比较的正确名称,所以我知道它正在通过。它只是没有将该数据传递给 GatsbyImage。
function findImage(showImage) {
imageData.map((image) => {
console.log(image.node.name + ' vs ' + showImage)
if (image.node.name == showImage) {
/**if the image name == our show image name, we return that image data */
return data.file.childImageSharp.gatsbyImageData
}
})
return
}
如果有帮助,我的 git 存储库在这里:
https://github.com/TheComeBackGuy/TKD-Gatsby
好吧,我知道我做错了什么。我没有将答案返回到函数的根目录。我相信更有经验的人可以把它写得更干净,但这是我使用的。
export default function FindImage(queryArray, showImage) {
let returnStatement = null
queryArray.map((images) => {
if (images.node.name == showImage) {
console.log(showImage + ' vs ' + images.node.name)
console.log(images.node.childImageSharp.gatsbyImageData)
returnStatement = images.node.childImageSharp.gatsbyImageData
}
})
return returnStatement
}
所以,我有一个 JSON 文件,其中包含我正在拉入我的 React 项目的信息。其中一个字段是图像关键字。我想用它来调用可以转储促销图像的“显示”文件夹中的图像。
thisYear.json
{
"title": "Rope",
"author": "Patrick Hamilton",
"image": "rope",
},{
"title": "I Hate Hamlet",
"author": "Paul Rudnick",
"image": "iHateHamlet",
}
]
我做了一个查询,将图像从所说的“显示”文件夹抓取到 jsx 文件
{
allFile(filter: {relativeDirectory: {eq: "shows"}}) {
edges {
node {
id
name
childImageSharp {
gatsbyImageData(placeholder: DOMINANT_COLOR)
}
}
}
}
}
我尝试编写一些比较名称属性的函数,但我似乎无法编写任何有效的函数。我在这里没有掌握任何东西,我只是不知道它是什么。
在我映射 JSON 文件并与查询数据 imageData 进行比较时,传入了 showImage。控制台日志显示正在比较的正确名称,所以我知道它正在通过。它只是没有将该数据传递给 GatsbyImage。
function findImage(showImage) {
imageData.map((image) => {
console.log(image.node.name + ' vs ' + showImage)
if (image.node.name == showImage) {
/**if the image name == our show image name, we return that image data */
return data.file.childImageSharp.gatsbyImageData
}
})
return
}
如果有帮助,我的 git 存储库在这里: https://github.com/TheComeBackGuy/TKD-Gatsby
好吧,我知道我做错了什么。我没有将答案返回到函数的根目录。我相信更有经验的人可以把它写得更干净,但这是我使用的。
export default function FindImage(queryArray, showImage) {
let returnStatement = null
queryArray.map((images) => {
if (images.node.name == showImage) {
console.log(showImage + ' vs ' + images.node.name)
console.log(images.node.childImageSharp.gatsbyImageData)
returnStatement = images.node.childImageSharp.gatsbyImageData
}
})
return returnStatement
}