【问题标题】:Encountered two children with the same key Error遇到两个孩子用同一个key Error
【发布时间】:2019-01-11 23:36:23
【问题描述】:

我正在尝试将一组对象(城市名称)映射到 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>

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

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    您使用 latitude 作为键,纬度可以相同,因此请尝试使用 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={`${r.lat}${r.lng}${r.name}`}
    

    【讨论】:

    • 我尝试了很多组合,包括你的,但问题仍然存在。
    • 您的数据中是否有可能出现经纬度和名称相同的情况?
    • @HafizHanif 我已经编辑了答案,请也包括索引,试试这个
    • 我试过了,也没用。仍然输出相同的错误。我不明白为什么。
    • 我尝试了很多组合,但无法让它发挥作用。长数组是否有可能导致这种情况?
    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2016-01-28
    • 2017-12-15
    • 2017-05-17
    • 2021-10-29
    • 2018-10-06
    相关资源
    最近更新 更多