首页 > 解决方案 > Reactjs/SemanticUi 在地图中添加 if 条件

问题描述

我想要的是在函数if内添加条件map,但没有成功:

const CityOptions = Data.CityData.map((state, index) => ({
    key: index,
    text: state.name,
    value: state.id,
}));

render(){
return(
<Dropdown
   id="City"
   search selection
   options={CityOptions}
></Dropdown>
}
}

我试过:

 <Dropdown
     id="City"
     search selection
 >
     {Data.CityData.map((v,i) => {
         if(v.pid === this.state.cityValue){
             return (
                 <option key={i} value={v.id}>{v.name}</option>
             )
         }
         return true
     })}
 </Dropdown>

错误:

React.Children.only 期望接收单个 React 元素子元素。

并且:

<Dropdown
   id="City"
   search selection
   options={CityOptions.pid === this.state.cityValue ? CityOptions : null}
/>

结果:

没有数据

标签: javascriptreactjssemantic-ui

解决方案


你可以filter

Data.CityData.filter(x => x.pid === this.state.cityValue).map((v,i)  =>{
    return <option key={i} value={v.id}>{v.name}</option>
})

根据语义用户界面的文档 optionsarray遵循objects模式的{ text: '', value: '' },所以你需要像这样传递它

const CityOptions = Data.CityData.filter(x => x.pid === this.state.cityValue).map((v,i)  =>{
    return{
        key: v.id,
        value: v.id,
        text: v.text
    }
})

推荐阅读