将图像对象更改为:
const images = [
{
id: 1,
image: '/images/filler1.jpg'
},
{
id: 2,
image: '/images/filler2.jpg'
},
{
id: 3,
image: '/images/filler3.jpg'
}
]
export default images;
没有必要import
图像(如果它们已经存在)public
目录。
Refer: 静态文件服务 https://nextjs.org/docs/basic-features/static-file-serving
对于那些面临类似问题并且没有使用public
目录:
当你做这样的事情时import img from 'path/to/img.ext'
, img
不是源,它是类型的对象StaticImageData
,其定义如下:
type StaticImageData = {
src: string;
height: number;
width: number;
placeholder?: string;
};
所以,在这种情况下你需要使用img.src
为网址。像这样的东西也适合你,而不是上面的解决方案:
{backgroundImage: `url(${work.image.src})` }
此外,在此特定代码中,不需要图像对象,因为文件已按顺序正确命名。像这样的事情也应该有效:
Array.from({ length: 3 }, (_, i) => i + 1).map((i) => (
<div
style={{ backgroundImage: `url(/images/filler${i}.jpg)` }}
id={`work-img-${i}`}
className='work-img'
key={`work-${i}`}
>
<a href='/'>
<div className='overlay'>View Work</div>
</a>
</div>
));
PS:改变你的id
and key
in map
。你设置的是一样的id
对于多个元素,并将索引设置为key
不推荐。