【发布时间】:2022-01-01 02:47:16
【问题描述】:
为了有利于 reactstrap 下拉菜单的设计,我想将其用作搜索栏,并在下拉菜单中显示结果。但是默认的按键侦听器可以通过键盘(向上/向下箭头键)导航结果,仅由 Input 捕获,并且在结果可见时无法将其传播到父级或正在侦听按键事件的任何对象。
<Dropdown toggle={() => setIsOpen(!isOpen)} isOpen={isOpen}>
<DropdownToggle>
<Input onChange={(e) => setQuery(e.target.value)} placeholder="search placeholder" />
</DropdownToggle>
<DropdownMenu>
{fetchedItems.map((item) => (
<div key={item}>
<DropdownItem>action #1</DropdownItem>
<DropdownItem>action #1</DropdownItem>
<DropdownItem text>Dropdown Item Text</DropdownItem>
<DropdownItem disabled>Action (disabled)</DropdownItem>
<DropdownItem divider />
</div>
))}
</DropdownMenu>
</Dropdown>
现在看this sandbox我正在寻找两种方法,要么将关键事件侦听器添加为默认下拉行为,要么自定义<Input type=" search"/>
现在的问题是如何去做。我认为处理关键监听器可能会更好。
【问题讨论】:
-
你的
DropdownItem会被硬编码吗?如果这些选项来自 fetchedItems,您不能只过滤 fetchedItems 中的值吗? -
@Stoobish 有什么区别?无论值是什么,箭头键都无法导航下拉项目。检查沙箱,有三个示例,其中带有
Inputcomponent 的示例不起作用 -
哦,明白了,误解了你的问题。您希望可搜索的下拉菜单允许通过箭头键进行导航。
标签: reactjs bootstrap-5 reactstrap react-tsx