ReactJ отображают данные в optgroup - PullRequest
0 голосов
/ 01 ноября 2019
this.props.datacat.map(singleData=>{
  return Object.keys(singleData).map((key,i) =>{
     if(key==='name'){
        return <OptGroup label  = {singleData[key]}>
     }else{
        return <Option key= {key} >{singleData[key]}</Option> 
     }
        return </OptGroup>
  })
})

Данные (this.props.datacat)

[
  {
    "4967": "Others.",
    "4968": "Sports & Beachwear > Others.",
    "4969": "Lingerie & Nightwear > Others.",
    "4971": "Pants & Shorts > Others.",
    "name": "Women Clothes"
  },
  {
    "4798": "Supplements > Others.",
    "4802": "Men's Grooming > Others.",
    "4952": "Others.",
    "4953": "Medical Supplies > Others.",
    "4954": "Personal Pleasure > Others.",
    "4955": "Personal Care > Others.",
    "4956": "Pedicure & Manicure > Others.",
    "6647": "Lips > Lip Tint"
    "name": "Health & Beauty"
  }
]

Выше кода, который пытается отобразить данные, если ключ является name затем для создания метки optgroup , в противном случае будут отображены все данные в значении параметра. После этого значение параметра id , равное <Option key= {key} >{singleData[key]}</Option>, должно быть внутри значения параметра, а отображаемый текст - это значение. Кто-нибудь знает, как это сделать :(?

1 Ответ

1 голос
/ 01 ноября 2019

Для каждой записи this.props.datacat создайте OptGroup, затем заполните его всеми опциями этой записи, кроме опции с ключом name:

this.props.datacat.map((singleData) => (
  <OptGroup label={singleData["name"]}>
    {Object.keys(singleData)
      .filter(key => key !== "name")
      .map(key => (
        <Option key={key}>{singleData[key]}</Option>
      ))}
  </OptGroup>
));

Demo

...