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

React列表子元素缺少唯一key prop定位求助

解决React列表"key" prop缺失问题

问题定位

你遇到的错误提示,根源在两处menu.map循环里:你用无key的空Fragment(<>)作为循环返回项的最外层容器,却把key加在了内部的DropdownMenu和Link组件上。而React要求循环生成的每个子项的最顶层元素必须携带唯一key,这才导致了报错。

修复方案

空Fragment(<>)不支持添加key属性,需要替换为完整的<React.Fragment>并绑定key,也可以用带key的普通容器元素(比如div)。以下是两处循环的修复代码:

第一处桌面端菜单循环修复

{menu.map((item, index) => (
    <React.Fragment key={index}>
        {item.children && item.children.length > 0 ? (
            <DropdownMenu
                menu={item}
                items={item.children}
                mobile={props.mobile}
            />
        ) : (
            <Link href={item.href}>
                <a
                    className=" py-2 px-5 font-medium text-gray-600 dark:text-gray-400 hover:text-blue-500 outline-none focus-visible:text-blue-500 focus-visible:ring-2 rounded-full ring-blue-100"
                    target={item.external ? "_blank" : ""}
                    rel={item.external ? "noopener" : ""}>
                    {item.label}
                </a>
            </Link>
        )}
    </React.Fragment>
))}

第二处移动端菜单循环修复

{menu.map((item, index) => (
    <React.Fragment key={index}>
        {item.children && item.children.length > 0 ? (
            <DropdownMenu
                menu={item}
                items={item.children}
                mobile={true}
            />
        ) : (
            <Link href={item.href}>
                <a
                    className=" py-2 px-5   text-sm font-medium text-gray-600 dark:text-gray-400 hover:text-blue-500 outline-none focus-visible:text-blue-500 focus-visible:ring-2 rounded-full ring-blue-100"
                    target={item.external ? "_blank" : ""}
                    rel={item.external ? "noopener" : ""}>
                    {item.label}
                </a>
            </Link>
        )}
    </React.Fragment>
))}

额外建议

尽量别用index作为key,如果你的menu数组里每个项有唯一标识(比如id字段),优先用这个字段当key,能避免列表项顺序变化时引发的不必要渲染问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:55:01