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