reactjs React返回图像src作为对象

kx7yvsdv  于 2023-01-04  发布在  React
关注(0)|答案(4)|浏览(152)

我有一个变量定义如下:

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}

js81xvg6

js81xvg61#

{ foo }{ foo: foo }的简写,{ bar }{ bar: bar }的简写。
您可以直接将其设置为image属性,而不是将图像url放在一个对象中,该对象的键对于每个图像都不同。

const team = [
  {
    name: "Foo",
    bio: "FooBar",
    image: foo
  },
  {
    name: "Bar",
    bio: "FooBar",
    image: bar
  },
];
2g32fytz

2g32fytz2#

team[0].image{"foo":"yourUrl"}形式的对象,因为您将foo括在方括号中,该方括号使用对象简写语法创建名为foo的属性,该属性具有变量foo中的值。请删除foobar前后的方括号

cbwuti44

cbwuti443#

在我的例子中,我挣扎了四个小时。但是,这是一个Next JS项目,所以我需要把图像属性放在一个图像组件中。<Image src={props.img} />而不是<img>

5ssjco0h

5ssjco0h4#

你不需要把你的图像文件别名放在{foo}中,你可以只写image:foo,否则将返回[object object]。

相关问题