reactjs - 在 MUI 自动完成中删除鼠标离开时的突出显示
问题描述
使用Autocomplete
并悬停在选项列表上,然后将鼠标移出它会留下最新的选项,即鼠标悬停在的选项仍然突出显示。
当鼠标指针完全不在列表之外时,删除突出显示的最佳方法是什么?
解决方案
您可以添加mouseenter
和mouseleave
处理程序以了解鼠标何时在内部,Listbox
如果鼠标在外部并且选项已聚焦,则覆盖背景。请注意,为了增加 CSS 特异性并将您的样式置于 MUI 的样式之上,需要使用双 & 符号:
const [mouseInListBox, setMouseInListBox] = React.useState(false);
return (
<Autocomplete
{...props}
ListboxProps={{
onMouseEnter: () => setMouseInListBox(true),
onMouseLeave: () => setMouseInListBox(false),
sx: {
'&& li.Mui-focused': {
bgcolor: !mouseInListBox ? 'white' : undefined,
},
},
}}
renderInput={(params) => <TextField {...params} label="Movie" />}
/>
);
现场演示
推荐阅读
- html - 移动浏览器在加载 html5 背景视频时遇到问题
- javascript - 如何在按钮单击时从数组javascript调用函数
- javascript - 日志 = 新日志(“调试”);
- unity3d - 孩子们在 Unity 中以父母为中心“自动居中”
- javascript - 有没有办法使用javascript在客户端对视频文件(.mkv)进行一些操作?
- mysql - closeCells() 查询说明
- javascript - “i”变量在控制台中未定义
- ruby-on-rails - Rails + Sidekiq: Sidekiq.options[:concurrency] returns 10 instead of 3, which is the value in my config/sidekiq.yml file
- jquery - 前端 jQuery 代码无法使用 Node.js 正确执行
- ssl - OpenSSL SSL_connect:SSL_ERROR_SYSCALL 连接到 api.telegram.org:443