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

React中Array.map仅渲染数组首个元素问题求助

问题根源及修复方案

你遇到的问题主要由三个关键错误导致,逐一修复即可解决:


1. ReactDOM.render调用方式错误

你当前直接调用App()传入render方法,这会生成静态的React元素而非组件实例,会导致组件无法正常工作,进而引发渲染异常。

修复:
将ReactDOM.render(App() , document.getElementById('root'));改为:

ReactDOM.render(<App />, document.getElementById('root'));

2. 列表渲染缺少唯一key属性

使用Array.map渲染React列表时,必须为每个子组件添加唯一的key属性,React依赖这个属性识别列表项,没有key会导致渲染逻辑异常。

修复:
在map循环中为Card组件添加key(优先使用数据中唯一标识,比如id;如果没有可以临时用index):

data.map((prop, index) => {
    return  <Card key={index} img={prop.img} title={prop.title} />
})

3. 重复使用全局唯一的id属性

Card组件中使用了id="card"、id="card-image"等id属性,而HTML规范要求id必须全局唯一,多个Card实例会导致重复id,这会干扰浏览器的DOM解析,引发渲染或样式问题。

修复:
将所有id替换为class:

export default function Card({img , title}){
    return (
        <div className="card">
            <div className="card-image">
                <img src={img} alt={title}></img>
            </div>
            <div className="card-info">
                <span className="card-title"><h3>{title}</h3></span>
                <span>
                    <h4>Weight : </h4>
                    <p></p>
                </span>
                <span>
                    <h4>Height :</h4>
                    <p></p>
                </span>
                <span>
                    <h4>Description :</h4>
                    <p></p>
                </span>
            </div>
        </div>
    );
}

完成以上修改后,两个Card组件就能正常渲染了。

内容的提问来源于stack exchange,提问作者Chahat Sagar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:00:18