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

ReactJS出现flattenChildren重复key警告,求解决可跳转列表问题

解决React中flattenChildren重复key警告的问题

这个警告的根源很明确:你给<li>设置的key是一个布尔值(this.props.account.id === question.expID的结果要么是true要么是false),当多个列表项满足相同的判断条件时,就会出现重复的key——而React要求列表里的每个子元素必须有唯一且稳定的key值,这样它才能准确追踪每个列表项的状态和变化。

最直接的解决方案

用每个question对象独有的标识作为key,比如你的数据里的question.id(这也是React官方推荐的做法),修改后的代码如下:

render() {
  const quesItems = this.state.questions.map((question) => {
    return (
      <li key={question.id}>
        <a href={`/ans/${question.id}`}>
          {question.description}
        </a>
      </li>
    );
  });
  return (
    <div>
      <h1> Answer the questions here!</h1>
      <ul>
        {quesItems}
      </ul>
    </div>
  );
}

如果需要保留布尔判断的关联(比如用于样式区分)

要是你原本想用这个布尔值做一些逻辑(比如给匹配的项加样式),可以把question.id和布尔值组合成唯一的key:

<li key={`${question.id}-${this.props.account.id === question.expID}`}>

这样既保留了你的判断逻辑,又能保证每个key都是独一无二的,彻底解决重复key的警告。

内容的提问来源于stack exchange,提问作者M.A.G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:11:54