【发布时间】:2021-05-11 06:07:03
【问题描述】:
如果在反应选择中选择了标签/值,如何过滤?
首先我有一个选项列表(来自 API),如下所示:
const listFoodSelect = [
{foodID: 123, label: 'food 1'},
{foodID: 456, label: 'food 2'},
{foodID: 789, label: 'food 3'},
{foodID: 321, label: 'food 4'},
{foodID: 234, label: 'food 5'}
];
那么我想如果我选择的标签/值之一没有出现在listFoodSelect中,例如我选择foodID 234,如果标签/值已经被选择,我该如何过滤列表?
预期如下:
const listFoodSelect = [
{foodID: 123, label: 'food 1'},
{foodID: 456, label: 'food 2'},
{foodID: 789, label: 'food 3'},
{foodID: 321, label: 'food 4'},
];
这是一个初始状态
const [menuName, setMenuName] = useState('')
const [listFoodSelect, setListFoodSelect] = useState([])
如果选择了值,这是一个调整功能
const onSelectMenu = (indexItem, indexFood) => event => {
let { foodId, label } = event
let data = [...listData]
setMenuName(event.label)
setListFoodSelect(listFoodSelect.filter(item => item.foodName !== label))
}
这是已经返回的 react-select 组件
<Select
onChange={onSelectMenu(indexItem, indexFood)}
options={listFoodSelect.filter((option) => option.label !== menuName)}
value={menuName}
/>
【问题讨论】:
-
当用户选择一个选项时,您想删除所有其他选项吗?
-
不,我想如果用户选择一个选项,那么只有选定的选项不会出现
-
那么你做错了什么?
-
列表选项保持未经过滤
-
看我的回答希望它是你想要的
标签: javascript reactjs react-hooks react-select