Я использую общий c Image
компонент:
import React from "react"
import Img from "gatsby-image"
import { useStaticQuery, graphql } from "gatsby"
export default (props) => {
const { filename, type = 'default', alt, sizes = '(max-width: 400px) 100px, (max-width: 800px) 200px, 400px' } = props;
const images = useStaticQuery(graphql`
query ImageQuery {
data: allFile {
edges {
node {
relativePath
default: childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
square: childImageSharp {
fluid(maxWidth: 600, maxHeight: 600) {
...GatsbyImageSharpFluid
}
}
}
}
}
}
`);
const image = images.data.edges.find(n => {
return n.node.relativePath.includes(filename);
});
if (!image) {
return null;
}
return (
<Img alt={alt} fluid={{
...image.node[type].fluid,
sizes: sizes,
}} />
)
}
Затем я передаю имя файла и альтернативный текст (и, необязательно, тип и размеры).
<Image alt="Gravity does not apply to cats" type="square" filename="cat-defies-gravity.png" />
I согласитесь, это обходной путь, пока мы не получим что-то вроде Querying 2.0 . Если вы прочитаете эту страницу, то увидите в качестве примера именно вашу проблему.