1 回答

TA貢獻1942條經驗 獲得超3個贊
根據文檔,images prop應該是圖像數組,因此應用于您的用例,images必須是對象圖像數組。
假設您的查詢按預期工作并檢索正確的數據,您需要安裝有效的對象數組以作為 images 傳遞prop。
import React from "react"
import { graphql, Link } from "gatsby"
import Image from "gatsby-image"
import ImageGallery from 'react-image-gallery';
const ComponentName = ({ data }) => {
const {id, galleryImage} = data.home
console.log('data is', data)
const images = [];
galleryImage.forEach(image=>{
let yourImageObject={};
yourImageObject.original=image.formats.large.childImageSharp.fluid;
images.push(yourImageObject);
});
return (
<Layout>
<section className="template">
<ImageGallery items={images} />;
</section>
</Layout>
)
}
export const query = graphql`
query GetSingleHome($slug: String) {
home: strapiHomes(slug: { eq: $slug }) {
galleryImage {
formats {
large {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
id
}
}
small {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
id
}
}
}
}
MainImage {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
}
`
export default ComponentName
您可以簡化代碼,但我將其拆分以使其更具可讀性和理解性。您需要循環遍歷每個圖像并為組件創建必需的數據ImageGallery:一個對象數組,original其中包含一個屬性,...GatsbyImageSharpFluid其中包含片段。
如果此包無法與 Gatsby 圖像一起使用,您可能需要稍微更改一下 GraphQL 查詢和代碼以適應它。
我不知道該依賴項的需求,但thumbnail如果需要,您也可以使用相同的方法添加該屬性,添加:
yourImageObject.thumbnail=image.formats.small.childImageSharp.fluid;
添加回答
舉報