You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.js中如何通过Props实现4张不同图片的卡片展示

解决React卡片重复显示同一张图片的问题

1. 准备多卡片数据

先创建一个包含所有卡片信息的数组,每个元素对应一张卡片的图片地址和替代文本:

const contactsData = [
  { id: 1, imgUrl: '/images/contact1.jpg', altText: '联系人1头像' },
  { id: 2, imgUrl: '/images/contact2.jpg', altText: '联系人2头像' },
  { id: 3, imgUrl: '/images/contact3.jpg', altText: '联系人3头像' },
  { id: 4, imgUrl: '/images/contact4.jpg', altText: '联系人4头像' }
];

注:id用于React列表渲染的唯一key,避免警告;imgUrl替换成你实际的图片路径

2. 修改Contact组件接收Props

把原本硬编码的图片地址改成从props动态获取,支持接收外部传入的图片信息:

// 解构赋值写法(更简洁)
function Contact({ imgUrl, altText }) {
  return (
    <div className="contact-card">
      <img src={imgUrl} alt={altText} />
      {/* 其他卡片内容(如姓名、电话)也可以通过props传递 */}
    </div>
  );
}

// 或者基础props写法
function Contact(props) {
  return (
    <div className="contact-card">
      <img src={props.imgUrl} alt={props.altText} />
    </div>
  );
}

3. 循环渲染不同卡片

在父组件中通过map遍历数据数组,给每个Contact组件传递对应的props:

function App() {
  return (
    <div className="contacts-wrapper">
      {contactsData.map(contact => (
        <Contact 
          key={contact.id} 
          imgUrl={contact.imgUrl} 
          altText={contact.altText} 
        />
      ))}
    </div>
  );
}

问题原因说明

你之前重复显示同一张图片,本质是因为:

  • 要么Contact组件里硬写了固定的图片路径,没有动态接收外部参数
  • 要么渲染多个组件时,给所有Contact传了同一个图片地址

通过上述步骤,把图片数据抽离成数组,再通过props动态传递给每个组件,就能实现每张卡片显示不同图片。

内容的提问来源于stack exchange,提问作者Raaed Magdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:27:14