Javascript 从道具返回对象数组
因此,我有以下组件,它是使用创建的下拉列表 如何利用此.props.fends获取对象的选项数组Javascript 从道具返回对象数组,javascript,reactjs,Javascript,Reactjs,因此,我有以下组件,它是使用创建的下拉列表 如何利用此.props.fends获取对象的选项数组 编辑:多顿饭可以有相同的类别,我需要每个类别在选项中只显示一次。您可以这样做: options={this.props.meals.map( ({id, name})=>({value:id,label:name}) )} 您还可以使用创建一个容器,该容器将数据映射到下拉列表值 可以按以下方式按类别合并数据: 可变项目=[ { id:0, 名称:“意大利面”, 类别:“意大利语”, 价
编辑:多顿饭可以有相同的类别,我需要每个类别在选项中只显示一次。您可以这样做:
options={this.props.meals.map(
({id, name})=>({value:id,label:name})
)}
您还可以使用创建一个容器,该容器将数据映射到下拉列表值
可以按以下方式按类别合并数据:
可变项目=[
{
id:0,
名称:“意大利面”,
类别:“意大利语”,
价格:5.99,,
},
{
id:1,
名称:“汉堡包”,
类别:"美国",,
价格:7.99,
},
{
id:2,
名称:“其他汉堡”,
类别:"美国",,
价格:7.99,
},
];
console.log
[
…项目。减少
结果,项目=>
result.getitem.category
?result.getitem.category.pushitem.id
:result.setitem.category,[item.id],
后果
,
新地图,
,
].map[label,value]=>{label,value},
; 你可以这样做:
options={this.props.meals.map(
({id, name})=>({value:id,label:name})
)}
您还可以使用创建一个容器,该容器将数据映射到下拉列表值
可以按以下方式按类别合并数据:
可变项目=[
{
id:0,
名称:“意大利面”,
类别:“意大利语”,
价格:5.99,,
},
{
id:1,
名称:“汉堡包”,
类别:"美国",,
价格:7.99,
},
{
id:2,
名称:“其他汉堡”,
类别:"美国",,
价格:7.99,
},
];
console.log
[
…项目。减少
结果,项目=>
result.getitem.category
?result.getitem.category.pushitem.id
:result.setitem.category,[item.id],
后果
,
新地图,
,
].map[label,value]=>{label,value},
; 映射到this.props.fines数组,并创建所需的选项数组
<Select
isMulti
isSearchable
placeholder={"catégories"}
value={selectedOption}
onChange={this.handleChange}
options={this.props.meal.map(item=>({value: item.id, label: item.name}))}
/>
映射到this.props.fines数组,并创建所需的选项数组
<Select
isMulti
isSearchable
placeholder={"catégories"}
value={selectedOption}
onChange={this.handleChange}
options={this.props.meal.map(item=>({value: item.id, label: item.name}))}
/>
您只需要name属性,因此当您映射到膳食时,只需检索它。然后大写第一个字母 康斯特餐饮=[{ id:0, 名称:意大利面, 类别:意大利语, 售价:5.99 }, { id:1, 名称:汉堡包, 类别:美国, 售价:7.99 } ] const result=fines.map{name}=>{ 标签:`${name[0].toUpperCase}${name.slice1}`, 值:name }
console.logresult 您只需要name属性,因此当您映射到膳食时,只需检索它。然后大写第一个字母 康斯特餐饮=[{ id:0, 名称:意大利面, 类别:意大利语, 售价:5.99 }, { id:1, 名称:汉堡包, 类别:美国, 售价:7.99 } ] const result=fines.map{name}=>{ 标签:`${name[0].toUpperCase}${name.slice1}`, 值:name } console.logresult 您可以使用getOptionLabel和getOptionValue道具 getOptionLabel generic=选项=>字符串 将选项数据解析为要按组件显示为标签的字符串 getOptionValue generic=option=>string 将选项数据解析为字符串以比较选项并指定值属性 您可以使用getOptionLabel和getOptionValue道具 getOptionLabel generic=选项=>字符串 将选项数据解析为要按组件显示为标签的字符串 getOptionValue generic=option=>string 将选项数据解析为字符串以比较选项并指定值属性
谢谢@HMR!事实上,我忘了提到一些食物有相同的类别。我希望每个类别在选项中只出现一次。我现在就编辑我的帖子,让它更清晰。@JulesCorb你会扔掉与上一篇文章类别相同的文章,还是合并这些文章。如果您想合并,那么您将如何合并这些项目?最好提供一个示例源和预期输出。这两种解决方案都适合我的问题。我所需要的只是在我的选项中每个类别只有一次。因此,我是否必须扔掉或合并项目并不重要。我会选择最简单、最干燥的解决方案。@JulesCorb更新了答案。谢谢@HMR!事实上,我忘了提到一些食物有相同的类别。我希望每个类别在选项中只出现一次。我现在就编辑我的帖子,让它更清晰。@JulesCorb你会扔掉与上一篇文章类别相同的文章,还是合并这些文章。如果您想合并,那么您将如何合并这些项目?最好提供一个示例源和预期输出。这两种解决方案都适合我的问题。我所需要的只是在我的选项中每个类别只有一次。因此,我是否必须扔掉或合并项目并不重要。我会选择最简单、最干燥的解决方案。@JulesCorb更新了答案。正如我在帖子中所说,我实际上需要的是类别,而不是名称。这不是getOptionLabel={m=>m.na吗
me}而不是getOptionLabel={m=>c.name}?无论如何,除了这些细节,这也是一个有效的答案,所以非常感谢你!问题是,我只需要每个类别一次,这让我在选项中多次使用同一类别。正如我在帖子中所说,我实际上需要的是类别,而不是名称。是不是getOptionLabel={m=>m.name}而不是getOptionLabel={m=>c.name}?无论如何,除了这些细节,这也是一个有效的答案,所以非常感谢你!问题是,我只需要每个类别一次,这让我在选项中多次使用同一类别。非常感谢您的帮助!请参阅我的帖子编辑,我想找到一种方法,让我不想看到的每个类别的名称btw在选项中只出现一次。非常感谢您的帮助!请看我的文章编辑,我想找到一种方法,让每个类别,我不寻找名称btw只出现在选项一次。
<Select
options={this.props.meals},
getOptionLabel={m => m.name}
getOptionValue={m => m.id} />