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

在多个.map()中用index作key是否影响React响应性?需全局唯一key吗?

关于React中map遍历key的唯一性问题

.map()回调里的index只在当前遍历的数组范围内唯一,并非全局唯一。你代码里books和movies两个map分别生成的元素,会出现key重复的情况(比如第一个book和第一个movie的key都是0),而React要求同一父容器下的所有子元素key必须唯一,这种重复会导致渲染异常,还可能影响列表更新时的性能。

所以必须把key设置成全局唯一的,你说的给index加前缀('book-' + index和'movie-' + index)是可行的方案,能避免不同列表的元素key冲突。

如果你的books和movies数据本身带有唯一标识(比如id字段),更推荐直接用这个唯一标识当key——因为index会随着列表元素的增删发生变化,可能触发不必要的组件重渲染,而数据自带的唯一id更稳定。

修改后的示例代码

方案一:给index加前缀

<div>
    { books.map( ( book, index ) => (
        <div key={ `book-${index}` }>
            { book.label }
        </div>
    ) ) }
    { movies.map( ( movie, index ) => (
        <div key={ `movie-${index}` }>
            { movie.label }
        </div>
    ) ) }
</div>

方案二:使用数据自带的唯一标识(推荐)

<div>
    { books.map( book => (
        <div key={ book.id }>
            { book.label }
        </div>
    ) ) }
    { movies.map( movie => (
        <div key={ movie.id }>
            { movie.label }
        </div>
    ) ) }
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:01:25