我在项目中使用Material-UI中的自动完成组件。由于我有很多渲染选项,因此虚拟化将非常有益。所以我从文档中的虚拟化示例react-window
开始,使用. 一切都很好,但是该项目已经依赖于react-virtualized
,我想避免添加一个解决类似问题的新项目。因此,基于示例,我尝试使用fromreact-window
重新实现它。List
react-virtualized
代码示例
问题
如上面的沙箱所示,它有点工作。不起作用的是键盘导航。您可以使用键盘导航,但是Listbox
当您在可见元素之外导航时,不会滚动到突出显示的值。
我试过的:
- 覆盖组件
onKeyDown
。Autocomplete
然而,这完全覆盖了 keydown 功能,需要我重新实现它。 onKeyUp
用于保留onKeyDown
功能并找到具有data-focus
属性的元素,然后scrollToIndex
在List
组件上使用。这适用于某些情况,但如果用户按住键一段时间并最终出现在过度扫描渲染项目之外的索引上,它就会中断。
有没有人有一个很好的方法react-virtualized
来虚拟化 Material-UI Autoselect 组件中的选项?我应该使用其他东西List
吗?
我最后的手段是使用useAutocomplete
钩子并重新实现渲染逻辑,但由于我只是在虚拟化之后我想尽可能避免这种情况。