我有一个变量定义如下:
const team = [
{
name: "Foo",
bio: "FooBar",
image: { foo }
},
{
name: "Bar",
bio: "FooBar",
image: { bar }
},
];
图像导入的位置如下:
import foo from "../assets/foo.jpg";
import bar from "../assets/bar.jpg";
然后将它们传递给要呈现的组件,其中:
<TeamRow team={team} />
The TeamRow component looks like this:
const TeamRow = props => {
const items = props.team.map((item, index) => {
return (
<div className="col-10 col-sm-4 col-md-1 mx-auto text-center">
<div className="row">
<div className="col-12 teamMemberImage">
<img className="img-fluid" src={item.image} />
</div>
</div>
<div className="row">
<div className="col-12">{item.name}</div>
</div>
<div className="row">
<div className="col-12">{item.bio}</div>
</div>
</div>
);
});
return <div className="row">{items}</div>;
};
export default TeamRow;
图像渲染失败。当我在开发工具中查看它们时,它们有src="Object object"
。调用TeamRow
的类是在其中定义team
的类。定义它之后,调用console.log(foo
返回指向图像的url,正如预期的那样。不知何故,在传递到第二个组件时,预期的行为停止了。
奇怪的是,之前我用react标志作为占位符,所以:import logo from "../assets/logo.svg";
,这是有效的,但前提是我把它渲染成src={item.image.logo}
。
4条答案
按热度按时间js81xvg61#
{ foo }
是{ foo: foo }
的简写,{ bar }
是{ bar: bar }
的简写。您可以直接将其设置为
image
属性,而不是将图像url放在一个对象中,该对象的键对于每个图像都不同。2g32fytz2#
team[0].image
是{"foo":"yourUrl"}
形式的对象,因为您将foo
括在方括号中,该方括号使用对象简写语法创建名为foo
的属性,该属性具有变量foo
中的值。请删除foo
和bar
前后的方括号cbwuti443#
在我的例子中,我挣扎了四个小时。但是,这是一个Next JS项目,所以我需要把图像属性放在一个图像组件中。
<Image src={props.img} />
而不是<img>
5ssjco0h4#
你不需要把你的图像文件别名放在{foo}中,你可以只写image:foo,否则将返回[object object]。