Это действительно сложно, так как (AFAIK) вы не можете передавать реквизиты из компонента страницы в пользовательский компонент с помощью rehype-react
.Я думаю, вам нужно сделать что-то похожее на gatsby-remark-images
, который находит пути к изображениям и устанавливает их.
Я написал этот плагин , который имитирует gatsby-remark-images
, но для пользовательскихкомпоненты, как в вашем случае.
Вот настройка по умолчанию, вы можете переопределить имя компонента и передать дополнительные параметры преобразования изображения.
// gatsby-config.js
module.exports = {
plugins: [
{
resolve: `gatsby-transformer-remark`,
options: {
plugins: [
{
resolve: `gatsby-remark-custom-image-component`,
options: {
// plugin options
componentName: 'image-wrapper',
imagePropName: 'src',
sharpMethod: 'fluid',
// fluid's arguments, see gatsby-plugin-sharp docs
quality: 50,
maxWidth: 800,
}
},
],
},
},
Затем используйте его в уценке:
<image-wrapper src='./hero.jpg'></image-wrapper>
И получите изображение реквизита в свой пользовательский компонент.
//src/components/ImageWrapper.js
import React from 'react'
// the result of sharp's image transformation will be passed directly to this component.
// so if you use `fluid` as `sharpMethod`, you'll get
// src, srcSet, base64, aspectRatio, srcSetType, sizes, density, originalImage.
// Please refer to `gatsby-plugin-sharp` docs.
const ImageWrapper = ({ src, srcSet }) => <img src={src} srcSet={srcSet} />
export { ImageWrapper }