javascript - 遇到两个 child 用同一个key报错

标签 javascript reactjs

我正在尝试将一组对象(城市名称)映射到 ANTD 的选择组件中。

<Form.Item {...formItemLayout} label="City" hasFeedback >
   {getFieldDecorator('city', {
      rules: [{ required: true, message: 'Please select your city!',}],
      initialValue: this.state.city})(
    <Select
     showSearch
     placeholder="Please select a city"
     optionFilterProp="children"
     filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
    >
  {cities.map(r =>
   <Option key={`${r.lat}`} value={`${r.name}`}>{`${r.name}`}</Option>
   )}
    </Select>
 )}
</Form.Item>

这是数据(城市)的样子 cities data我不知道应该如何使用 Options 中的数据。请帮忙。

最佳答案

您正在使用 latitude 作为 key ,纬度可以相同,因此尝试使用 latitudename 的组合,这样就可以了独一无二。

 <Form.Item {...formItemLayout} label="City" hasFeedback >
   {getFieldDecorator('city', {
      rules: [{ required: true, message: 'Please select your city!',}],
      initialValue: this.state.city})(
    <Select
     showSearch
     placeholder="Please select a city"
     optionFilterProp="children"
     filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
    >
  {cities.map((r,index) =>
   <Option key={`${r.lat}${r.lng}${r.name}${index}`} value={`${r.name}`}>{`${r.name}`}</Option>
   )}
    </Select>
 )}
</Form.Item>

编辑:可能存在两个具有相同纬度和名称的地方(在一个大而奇怪的列表中,但可能会发生 :-/)。您应该尝试创建最独特的 key ,例如:

key={`${r.lat}${r.lng}${r.name}`}

关于javascript - 遇到两个 child 用同一个key报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155418/

相关文章:

javascript - 为什么标准是将css和js文件放在页面的顶部和底部(分别)?

javascript - 如何在 Actions on Google 意图实现 V2 中调用 2 个或更多异步方法

javascript - PDF 的 Chrome 扩展上下文菜单

javascript - 如何将 map() 与来自 axios 响应的数据一起使用?

javascript - useRef 钩子(Hook)中的 "current"键是什么?

javascript - 如何在Reactjs中使用页眉页脚

php - 使用 Javascript 检测浏览器

javascript - Cypress - 存储一个值以供稍后访问

javascript - 未及时设置状态以便新的 setState() 注册更改

reactjs - 属性 "aria-current=' 页面 '"with class=' 事件'即使在单击其他链接后也不会从第一个 NavLink 中消失