亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 GraphQL 映射 Gatsby 畫廊圖像

使用 GraphQL 映射 Gatsby 畫廊圖像

揚帆大魚 2023-10-20 15:11:12
我試圖弄清楚如何使用 graphql 查詢將圖庫圖像映射到 Gatsby 中的燈箱組件中。我想我需要設置images = to the childimage sharp array,但我不知道如何構建它,不斷出現undefined錯誤。任何指示將不勝感激。如果需要更多信息,請告訴我。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 = [];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這是畫廊組件,以防有幫助
查看完整描述

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;


查看完整回答
反對 回復 2023-10-20
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號