为啥我的 Material UI 自动完成元素之一的选项具有蓝色背景,而另一个没有? (包括代码沙箱)

Posted

技术标签:

【中文标题】为啥我的 Material UI 自动完成元素之一的选项具有蓝色背景,而另一个没有? (包括代码沙箱)【英文标题】:Why does one of my Material UI autocomplete elements have a blue background for the options, but the other doesn't? (includes code sandbox)为什么我的 Material UI 自动完成元素之一的选项具有蓝色背景,而另一个没有? (包括代码沙箱) 【发布时间】:2022-01-05 21:50:37 【问题描述】:

最终编辑:我最终找到了一个修复程序,并用它更新了我的沙箱!

编辑:我已经确定这是由于自动完成中的这一行...

isOptionEqualToValue=(option, value) => option.id === value.id

但是,如果我尝试将其更改为此...

isOptionEqualToValue=(option, value) => option.label === value.label

我在控制台中收到以下错误...

useAutocomplete.js:219 MUI:提供给自动完成的值是 无效的。没有一个选项与@​​987654325@ 匹配。您可以使用 isOptionEqualToValue 属性来自定义相等测试。


我使用 Material UI 和 React Hook Form 创建了以下表单...

https://codesandbox.io/s/inputquestion-jyq5b?file=/src/App.js

我很困惑为什么两个自动完成元素的样式不同,选项/选项悬停的浅蓝色背景,但另一个不是。

提前感谢您提供的任何帮助!

【问题讨论】:

两者在您共享的codesandbox 中看起来相同。在您的情况下,自动完成的浅色背景之一可能是由于输入 browser is auto filling 并显示该自动完成的 light blue 背景。 【参考方案1】:

可能是因为带有disabledPortal 属性的那个是在容器(Box)中呈现的,并且具有应用的样式。另一个将默认 disablePortal 值设置为 false,因此它使用 react 门户呈现,因此位于 Box 之外。尝试将这个道具设置为相同,看看它们是否相同。

【讨论】:

感谢您的回复!我尝试将 disablePortal 添加到药物表单元素,但它没有改变选项背景的颜色。这就是你要我尝试的意思吗?

以上是关于为啥我的 Material UI 自动完成元素之一的选项具有蓝色背景,而另一个没有? (包括代码沙箱)的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Material ui 自动完成中选项的字体大小?

反应材料 ui 自动完成元素焦点 onclick

设置 TextField InputProps 时,Material-UI 自动完成功能不起作用

从 material-ui 自动完成组合框中清除所有选定的值

Material-ui 自动完成过滤列表

如何限制 Material UI 实验室自动完成组件中可以选择的最大选项数