为什么此代码会出现 "Each child in a list should have a unique 'key' prop" 错误?

Why does this code give an "Each child in a list should have a unique 'key' prop" error?

如果我用 div 替换片段 (<> ) 并给它一个键,我就不会再收到错误,但这也会搞砸我的按钮组。这些元素中的每一个都有一个唯一的键,片段不应该是 dom 元素,所以为什么会出现这个错误?对解决方案有什么建议吗?

{["long", "short", "out", "none"].map(stance =>
           <>
               <input type="radio" className="btn-check" id={stance} key={stance}
               autoComplete="off" checked={options.stance === stance} disabled={options.auto}/>
               <label key={`${stance}label`} className="btn btn-outline-primary btn-sm" htmlFor={stance}>{stance}</label>
           </>
)}

为了解决这个问题,我认为 quickest/easiest 解决方案如下:

{["long", "short", "out", "none"].map(stance =>
           <React.Fragment key={stance}>
               <input type="radio" className="btn-check" id={stance} 
               autoComplete="off" checked={options.stance === stance} disabled={options.auto}/>
               <label className="btn btn-outline-primary btn-sm" htmlFor={stance}>{stance}</label>
           <React.Fragment/>
)}

从 React 文档中尝试这个:

https://reactjs.org/docs/fragments.html#keyed-fragments

<React.Fragment key={your key}>
    {your code}
</React.Fragment>

如果您不想使用 div,只需制作一个可以映射的组件,并且仍然保持 jsx 不变。

function MyInput({stance}){
   return(
     <>
    <input type="radio" className="btn-check" id={stance} 
               autoComplete="off" checked={options.stance === stance} disabled={options.auto}/>
               <label className="btn btn-outline-primary btn-sm" htmlFor={stance}>{stance}</label>
    </> 
  )
}

然后你的地图你可以这样做。

{["long", "short", "out", "none"].map((stance, i) =>
          <MyInput stance={stance} key={i}/>
)}
 {["long", "short", "out", "none"].map((stance,index) =>
       <>
           <input type="radio" className="btn-check" id={stance} key={index}
           autoComplete="off" checked={options.stance === stance} disabled={options.auto}/>
           <label key={`${stance}label`} className="btn btn-outline-primary btn-sm" htmlFor={stance}>{stance}</label>
       </>

)}

在key中使用index而不是stance,索引将来自map(stance,index)