【发布时间】:2020-01-08 20:08:14
【问题描述】:
我正在尝试利用 Gatsby Starter Lightbox 中的 Lightbox 组件在不同的页面上显示一些图片库。
由于默认设置了starter组件,它只支持一个目录的图片,如gatsby-config.js中设置的那样
`gatsby-plugin-styled-components`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `cars`,
path: `${__dirname}/src/images/cars/`,
},
然后在pages/index.js 中,它将所有图像传递给 Lightbox 组件。
<Lightbox images={data.allImageSharp.edges} />
allImageSharp {
edges {
node {
sizes(maxWidth: 1800) {
...GatsbyImageSharpSizes
}
}
}
}
所以我试图弄清楚如何根据不同的图像目录为其提供一组自定义图像。
我是 Gatsby 和 React 的新手,不知道如何按目录过滤 allImageSharp,但我确实找到了一种使用 allFile 的方法……虽然我在尝试使用它时遇到了类型错误。
我尝试了什么:
gallery: allFile(filter: {relativeDirectory: {eq: "screenshots/producta"}, extension: {regex: "/(jpg)|(png)/"}}) {
edges {
node {
id
name
relativeDirectory
extension
}
}
}
但在尝试将其用于:
<Lightbox images={props.data.gallery} />
我收到错误“TypeError:images.map 不是函数”
【问题讨论】: