reactjs - Reactjs 中的 Downshift - 菜单下拉菜单仅显示所选项目
问题描述
我在使用时遇到了问题
Downshift
,最初我拥有所有菜单选项,但是一旦我选择了一个选项,下次我点击它时,那将是唯一显示在菜单中的选项。
这是我当前的代码,任何反馈是什么导致的?
const dropdownItems = [
{ value: 'All' },
{ value: 'Database A' },
{ value: 'Database B' },
{ value: 'Database C' },
{ value: 'Database D' },
];
return (
<Downshift itemToString={item => (item ? item.value : '')}>
{({
getMenuProps,
getItemProps,
getToggleButtonProps,
getRootProps,
isOpen,
inputValue,
selectedItem,
highlightedIndex,
}) => console.log(
selectedItem === null ? dropdownItems[0].value : selectedItem.value,
) || (
<Container {...getRootProps()}>
<button {...getToggleButtonProps()}>
{isOpen
? selectedItem === null
? dropdownItems[0].value
: selectedItem.value
: selectedItem === null
? dropdownItems[0].value
: selectedItem.value}
</button>
{isOpen ? (
<Menu {...getMenuProps()}>
{dropdownItems
.filter(
item => !inputValue || item.value.includes(inputValue),
)
.map((item, index) => (
<Item
{...getItemProps({
key: item.value,
index,
item,
style: {
fontWeight:
index === highlightedIndex
? 'bold'
: null,
},
})}
>
{item.value}
</Item>
))}
</Menu>
) : null}
</Container>
)
}
</Downshift>
);
解决方案
.filter(item => !inputValue || item.value.includes(inputValue),)
为了解决这个问题,我删除了.filter
, 它只导致选择的值显示在下拉列表中。
这是更新的菜单标签
<Menu {...getMenuProps()}>
{dropdownItems.map((item, index) => (
<Item
{...getItemProps({
key: item.value,
index,
item,
style: {
fontWeight:
index === highlightedIndex
? 'bold'
: null,
},
})}
>
{item.value}
</Item>
))}
</Menu>
推荐阅读
- regex - 将 URL 从一个查询字符串重定向到另一个
- c++ - MPI 仅在 Visual Studio 调试部分编译
- bash - 终端在括号中有两个环境
- lightningchart - 'requestAnimationFrame' 处理程序占用
闪电图中的毫秒 - php - 将页面返回给客户端,并进行最终的 IO 阻塞操作
- rust - 我不知道为什么我不能使用格式!向量上的内部 for 循环
- python - 字符串等于的Python代码不适用于python
- flutter - ScrollController 的使用 Flutter 的新版本
- c# - c#无法从文本文件中读取特殊字符
- powerbi - 当行不相关时,为什么我的 DAX 度量会这样工作?