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

如何为列表中的shimmer card子元素添加唯一的key属性?

解决React Shimmer组件列表子元素的唯一key属性警告

你遇到的是React列表渲染的标准警告:列表中的每个子元素必须拥有唯一的key属性。你的Shimmer组件通过Array(15).fill("").map(...)生成了15个占位卡片,但未给每个卡片设置唯一key,因此触发了该警告。

以下是两种可行的解决方法:

方法一:使用map的索引作为key(适合静态占位场景)

这种方式简单直接,完全适配Shimmer这种临时静态列表的需求:

return (
  <div className="restraunt-list" >
    {Array(15)
      .fill("")
      .map((e, index) => (
        <div key={index} className="shimmer-card"> </div>
      ))}
  </div>
);
};
export default Shimmer;

map函数的第二个参数是当前元素的索引,在这个静态列表中,每个索引都是唯一的,能满足React对唯一标识的要求。

方法二:生成唯一ID数组(更语义化的方式)

如果之前尝试创建虚拟ID数组但失败,可能是用法有误,这里给出正确的实现:

// 生成带唯一标识的数组
const shimmerIds = Array.from({length:15}, (_, i) => `shimmer-card-${i}`);

return (
  <div className="restraunt-list" >
    {shimmerIds.map(id => (
      <div key={id} className="shimmer-card"> </div>
    ))}
  </div>
);
};
export default Shimmer;

通过Array.from直接构造包含唯一字符串的数组,遍历后将字符串作为key,比索引更具语义化,也避免了索引可能带来的潜在问题(不过Shimmer场景下索引方案已足够)。

注意:不要使用随机数作为key,组件重新渲染时随机数会变化,导致React频繁销毁重建子组件,影响性能。

内容的提问来源于stack exchange,提问作者Puru Rana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:22:08