所以我有以下组件,它是使用react-select创建的下拉列表。
import React from 'react'
import Select from 'react-select';
const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' }
];
class MealsFilters extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedOption: null,
};
}
handleChange = (selectedOption) => {
this.setState({ selectedOption });
console.log(`Option selected:`, selectedOption);
}
render() {
const { selectedOption } = this.state;
return (
<div className="container my-3">
<div className="row">
<div className="col-lg-4 col-md-6 col-sm-8">
<Select
isMulti
isSearchable
placeholder={"catégories"}
value={selectedOption}
onChange={this.handleChange}
options={options}
/>
</div>
</div>
</div>
)
}
}
export default MealsFilters;
options
变量是文档中的默认变量。我实际上需要用每个可用的餐食类别替换其值。如您所见,为此,我需要使用
value
和label
创建对象数组。该组件通过称为
meals
的道具访问膳食类别,如下所示:console.log(this.props.meals);
=> [{
id: 0,
name: spaghettis,
category: italian,
price: 5.99},
{
id: 1,
name: hamburger,
category: american,
price: 7.99},
{
etc.
}, {}]
如何利用
this.props.meals
获取我的options
对象数组?编辑:多餐可以具有相同的类别,我需要每个类别在选项中仅出现一次。
最佳答案
您可以执行以下操作:
options={this.props.meals.map(
({id, name})=>({value:id,label:name})
)}
您还可以使用redux connect创建一个容器,该容器将为您映射数据到下拉值
您可以通过以下方式按类别合并数据:
var items = [
{
id: 0,
name: 'spaghettis',
category: 'italian',
price: 5.99,
},
{
id: 1,
name: 'hamburger',
category: 'american',
price: 7.99,
},
{
id: 2,
name: 'other hamburger',
category: 'american',
price: 7.99,
},
];
console.log(
[
...items.reduce(
(result, item) => (
result.get(item.category)
? result.get(item.category).push(item.id)
: result.set(item.category, [item.id]),
result
),
new Map(),
),
].map(([label, value]) => ({ label, value })),
);
在组件中,它将如下所示:
options={[
...this.props.meals.reduce(
(result, item) => (
result.get(item.category)
? result.get(item.category).push(item.id)
: result.set(item.category, [item.id]),
result
),
new Map(),
),
].map(([label, value]) => ({ label, value }))}
关于javascript - 从props React JS返回对象数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53203465/