javascript - 如何自定义 Material UI 自动完成下拉菜单
问题描述
我正在使用 Material UI v5 beta1 并且我一直在尝试自定义他们的自动完成组件,以便在选择项目时选项上的排版颜色从黑色变为白色,但是,我无法弄清楚如何将样式传递给它。到目前为止,我已经尝试通过.MuiAutocomplete-option
样式化组件或全局覆盖传递我的样式(请参阅附加代码)并尝试了我能想到的每个状态,悬停,选择,聚焦,甚至尝试了 Material 类,但它们都不起作用. 我也尝试过使用带有 MenuList 的自定义 Popper,但没有运气。几天来,我一直在为此烦恼,并且无法检查 DOM 使事情变得更加困难,任何帮助或提示将不胜感激。先感谢您。
MuiAutocomplete: {
styleOverrides: {
root: {
// ...
},
option: {
padding: '5px 12px',
backgroundColor: theme.palette.background.paper,
display: 'flex',
height: 42,
borderRadius: theme.borderRadius.s,
'&:hover': {
backgroundColor: theme.palette.action.hover,
'& .Mui-Typography-root': { color: theme.palette.text.contrast },
},
'& .Mui-selected': {
backgroundColor: theme.palette.action.hover,
'& .Mui-Typography-root': { color: theme.palette.text.contrast },
},
'&.disabled': {
opacity: 0.5,
'& .Mui-Typography-root': {
color: theme.palette.text.disabled,
},
},
},
renderOption={(props, option) => {
return (
<li {...props}>
<Box display={'flex'} flexDirection={'row'}>
<Avatar size={'32'} variant={'circular'} />
<Box display={'flex'} ml={3} flexDirection={'column'}>
<Typography color={'text.primary'}>
{option.label}
</Typography>
<Typography color={'text.secondary'}>
Extra Information
</Typography>
</Box>
</Box>
</li>
);
}}
解决方案
我会传递{ selected }
给你的 renderOption,然后用它来切换你的内联样式
例如:
renderOption={(props, option, { selected }) => {
return (
<li {...props}>
<Box display={'flex'} flexDirection={'row'} style={{ backgroundColor: selected ? 'red' : 'green' }}>
<Avatar size={'32'} variant={'circular'} />
<Box display={'flex'} ml={3} flexDirection={'column'}>
<Typography color={'text.primary'}>
{option.label}
</Typography>
<Typography color={'text.secondary'}>
Extra Information
</Typography>
</Box>
</Box>
</li>
);
}}
推荐阅读
- html - 指针事件 - 当我使用制表键时没有一个不起作用
- c# - 什么检查方法比设置一个值是最优化的?
- kubernetes - Kubernetes “不错” pod 的 CPU 使用率
- objective-c - 目标 c 在完成处理程序上得到 EXC_BAD_ACCESS 错误
- python - gitlab-CI 如何从 gitlab 依赖项安装私有 python 包,该依赖项也引用 gitlab 存储库
- reactjs - 每次我在输入中输入内容时都会调用 setState
- c++ - 我的多态过程是否会导致内存泄漏?
- javascript - 如何在循环内从函数 setTimeout 更改变量
- python - Flask 没有收到来自 curl post 的参数
- c++ - 是否有一个 C++ 函数可以匹配与正则表达式开头匹配的字符串?