我有我的索引.js如下

import Head from 'next/head'
import Layout, { siteTitle } from '../components/layout'
import Homecard from '../components/homecard'
import logo from '../public/images/logo.jpg'

export default function Home() {
  return (
    <Layout>
      <Head>
        <title>{siteTitle}</title>
      </Head>
      <div className='d-flex'>
        <Homecard img={logo} />
      </div>

    </Layout>
  )
}

这是我的Homecard组件

import styles from '../styles/homecard.module.css'
import Image from 'next/image'

export default function Homecard({ img }) {

    return (
        <div style={{width: '33.33%'}}>
            <Image src={img} />
        </div>
    )
}

我收到这个错误

Error: Image with src "/images/logo.jpg" must use "width" and "height" properties or "layout='fill'" property.

如果我添加填充布局图像没有响应,如果我没有响应,则图像不会显示.

import styles from '../styles/homecard.module.css'
import Image from 'next/image'
import logo from '../public/images/logo.jpg'

export default function Homecard({ img }) {

    return (
        <div style={{width: '33.33%'}}>
            <Image src={logo} />
        </div>
    )
}

包裹json

{
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^6.1.1",
    "@fortawesome/free-solid-svg-icons": "^6.1.1",
    "@fortawesome/react-fontawesome": "^0.1.18",
    "date-fns": "^2.28.0",
    "gray-matter": "^4.0.3",
    "next": "latest",
    "normalize.css": "^8.0.1",
    "prop-types": "^15.8.1",
    "react": "17.0.2",
    "react-dom": "17.0.2",
    "remark": "^14.0.2",
    "remark-html": "^15.0.1"
  }
}

如何将图像作为组件props 传递而不出现该错误?

EDIT

我像这样改变了我的标记

<div style={{position: "relative",width: '100px', height: '100px'}}>
    <Image src={logo} layout='fill' />
</div>

错误消失了,但没有响应,图像失真

推荐答案

在搜索了一段时间后,我在nextjs github页面上发现了这个讨论,似乎我不是唯一遇到这个问题的人

{/* https://github.com/vercel/next.js/discussions/18739#discussioncomment-344932 */}
<div className={styles.imageContainer}>
    <Image src={logo} layout='fill' className={styles.image}/>                    
</div>
.imageContainer {
    width: 100%;
}

.imageContainer>span { /* OR change span to div */
    position: unset !important;
}

.image {
    object-fit: contain;
    width: 100% !important;
    position: relative !important;
    height: unset !important;
}

Javascript相关问答推荐

如何从调整大小/zoom 的SVG路径定义新的d属性?""

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

用JS从平面文件构建树形 struct 的JSON

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

钛中的onClick事件需要在两次点击之间等待几秒钟

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

如何限制显示在分页中的可见页面的数量

在JS中动态创建对象,并将其追加到HTML表中

OnClick更改Json数组JSX中的图像源

如何找到带有特定文本和测试ID的div?

如何通过Axios在GraphQL查询中发送数组

如何在脚本编译后直接将RxJ模块导入浏览器(无需Angel、webpack、LiteServer)

如何压缩图像并将其编码为文本?

JQuery使用选项填充HTMLSELECT并设置默认结果,默认结果显示为空

JSX/React -如何在组件props 中循环遍历数组

react :图表负片区域不同 colored颜色

如何在底部重叠多个div?

调试jQuery代码以获取所有行的总和(票证类型)

如何在Flat Pickr中更改取消选中日期的 colored颜色