作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将图像的路径作为 Prop 传递给组件
注意:组件和索引页都可以通过相同的路径访问图像。当我将路径作为 Prop 传递时它不起作用
在下面的代码中,我尝试使用 GatbsyImage 和 StaticImage 标签似乎都失败了
索引.js
import React from "react";
import 'bootstrap/dist/css/bootstrap.min.css';
import '../styles/index.scss';
import Main from '../Layouts/main';
import ImageOverlay from '../components/ImageOverlay';
import { StaticImage } from "gatsby-plugin-image"
function Home(){
// Home page images
return (
<Main >
<section className="home_page">
<ImageOverlay path="../images/home/places/portblair.png"> </ImageOverlay>
</section>
</Main>
)
}
export default Home
组件/ImageOverlay.js
import React from 'react';
import { GatsbyImage, StaticImage } from "gatsby-plugin-image"
const ImageOverlay = ({path}) =>{
return(
<div>
<GatsbyImage image={path}></GatsbyImage>
<StaticImage src={path}></StaticImage>
</div>
)
}
export default ImageOverlay;
我使用 GatsbyImage 和 StaticImage 只是为了检查
最佳答案
您不能使用外部 props
在 StaticImage
,这是一个 known restriction :
Restrictions on using
StaticImage
There are a few technical restrictions to the way you can pass propsinto
StaticImage
. Most importantly, you can’t use any of the parentcomponent’s props. For more information, refer to the Gatsby Imageplugin reference guide. If you find yourself wishing you could use aprop passed from a parent for the imagesrc
then it’s likely that youshould be using a dynamic image.
// ⚠️ Doesn't work
export function Logo({ logo }) {
// You can't use a prop passed into the parent component
return <StaticImage src={logo}>
}
StaticImage
是使用静态方法,附加
src
直接地:
import React from 'react';
import { GatsbyImage, StaticImage } from "gatsby-plugin-image"
const ImageOverlay = ({path}) =>{
return(
<div>
<StaticImage src={`../images/home/places/portblair.png`}></StaticImage>
</div>
)
}
export default ImageOverlay;
如果您想使用
GatsbyImage
,您将需要查询您的图像以获取正确的数据:
import { graphql } from "gatsby"
import { GatsbyImage, getImage } from "gatsby-plugin-image"
function Home({ data }) {
const image = getImage(data.blogPost.avatar)
return (
<section>
<GatsbyImage image={image} alt={data.blogPost.author} />
<p>{data.blogPost.body}</p>
</section>
)
}
export const pageQuery = graphql`
query {
blogPost(id: { eq: $Id }) {
title
body
author
avatar {
childImageSharp {
gatsbyImageData(
width: 200
placeholder: BLURRED
formats: [AUTO, WEBP, AVIF]
)
}
}
}
}
`
注意:当然,请根据您的需要调整代码段,但要明白
relativePath
和
absolutePath
, 在
localhost:8000/___graphql
测试查询.
关于gatsby - 如何在 Gatsby-plugin-image 中将图像路径作为 Prop 传递给 Gatsby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66759909/
我是一名优秀的程序员,十分优秀!