Importando y mostrando varias imágenes desde GraphQL usando gatsby-plugin-image
Hola, estoy tratando de agregar un feed de Instagram a mi sitio web pero no puedo encontrar una forma de hacerlo funcionar. Realmente no he usado estas herramientas antes, así que no lo entiendo muy bien, pero llegué a un punto en el que creo que tengo el feed en GraphQL. Ahora el problema es que no sé cómo mostrar las imágenes. ¿Alguien puede ayudarme?
Aquí hay un poco de código:
import React from "react"
import { GatsbyImage, getImage } from "gatsby-plugin-image"
import { useStaticQuery, graphql } from "gatsby"
const CapabilityList = () => {
const data = useStaticQuery(graphql`
query InstagramQuery {
allInstagramContent {
edges {
node {
localImage {
childImageSharp {
fixed(width: 200, height: 200) {
...GatsbyImageSharpFixed
}
}
}
}
}
}
}
`)
let arrayOfInstaImages = getImage(data, 'allInstagramContent.edges')
return (
<div style="{{" maxwidth:="" "900px",="" marginbottom:="" "1.45rem",="" display:="" 'flex'="" }}="">
{arrayOfInstaImages.map((item, i) => {
return (
<div key="{i}" style="{{" width:="" "200px",="" height:="" "200px"="" }}="">
<gatsbyimage image="{item.node.localImage.childImageSharp.fixed}"></gatsbyimage>
</div>)
})}
</div>
)
}
export default CapabilityList;
Esto no funciona y muestra el siguiente error: “Propiedad ‘map’ no existe en el tipo ‘IGatsbyImageData'”. Entonces creo que necesito otra forma de mostrar algunas imágenes del arreglo.
¡Muchas gracias por cualquier ayuda!
davy.ai
Solución para mostrar imágenes de Instagram usando el plugin Gatsby Image y GraphQL
Problema
El usuario está tratando de agregar un feed de Instagram a su sitio web, pero tiene dificultades para mostrar las imágenes. Él ha utilizado el plugin de Gatsby Image, GraphQL y otras herramientas, pero no puede hacer que funcione. Se muestra el mensaje de error “Property ‘map’ does not exist on type ‘IGatsbyImageData'”.
Solución
Para mostrar las imágenes del feed de Instagram usando el plugin Gatsby Image y GraphQL, puede seguir estos pasos:
gatsby-source-instagram
en su proyecto de Gatsby utilizando el siguiente comando:npm install gatsby-source-instagram
gatsby-config.js
), agregue el siguiente código para configurar el plugin:module.exports = {
plugins: [
{
resolve: `gatsby-source-instagram`,
options: {
username: `SU_NOMBRE_DE_USUARIO_DE_INSTAGRAM`,
access_token: `SU_TOKEN_DE_ACCESO_DE_INSTAGRAM`,
instagram_id: `SU_ID_DE_NEGOCIO_DE_INSTAGRAM`,
},
},
],
}
Reemplace los marcadores de posición
SU_NOMBRE_DE_USUARIO_DE_INSTAGRAM
,SU_TOKEN_DE_ACCESO_DE_INSTAGRAM
ySU_ID_DE_NEGOCIO_DE_INSTAGRAM
con sus propios valores. Puede obtener el token de acceso y el ID de negocio desde el panel de Instagram Developer.import { graphql } from 'gatsby'
import { GatsbyImage, getImage } from 'gatsby-plugin-image'
export const query = graphql`
query InstagramFeed {
allInstagramContent(sort: { fields: timestamp, order: DESC }, limit: 6) {
edges {
node {
id
thumbnail_src
caption
localImage {
childImageSharp {
gatsbyImageData(width: 200, height: 200)
}
}
}
}
}
}
`
Esta consulta busca los seis últimos posts de Instagram y sus imágenes en miniatura, subtítulos e imágenes locales en el tamaño deseado.
useStaticQuery
para recuperar los datos del feed de Instagram:const data = useStaticQuery(query)
getImage
:const images = data.allInstagramContent.edges.map(({ node }) => getImage(node.localImage))
GatsbyImage
y un ciclo:<div>
{images.map((image, index) => (
<gatsbyimage key="{index}" image="{image}" alt="{data.allInstagramContent.edges[index].node.caption}"></gatsbyimage>
))}
</div>
Esto renderiza las imágenes como componentes de Gatsby Image con sus subtítulos como texto alternativo.
Explicación
El plugin
gatsby-source-instagram
le permite buscar datos e imágenes del feed de Instagram usando una consulta GraphQL que puede ejecutar en su proyecto de Gatsby. El plugin requiere su nombre de usuario de Instagram, token de acceso e ID de negocio para autenticar las solicitudes a la API.Una vez que se configura el plugin, puede escribir una consulta GraphQL para buscar los datos necesarios, incluidas las imágenes locales en el tamaño deseado. Luego puede usar el gancho
useStaticQuery
para recuperar estos datos en su componente React y extraer el array de imágenes usando la función de ayudagetImage
.Luego puede recorrer este array y renderizar cada imagen como un componente de Gatsby Image utilizando el componente
GatsbyImage
y pasando los datos de la imagen como una propiedad. También puede incluir el subtítulo de la imagen como texto alternativo para la accesibilidad.