css - 是否可以在悬停时禁用 Material ui 元素(选择)?
问题描述
当用户将鼠标悬停在元素上时,我想做这样的事情:
document.getElementById("dropdownCategory").disabled = true;
<Tooltip arrow placement="right" title={props.description} >
<FormControl id="dropdownCategory" >
<InputLabel id="demo-simple-select-label" >{props.title} - {props.price}€</InputLabel>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={category[props.id]}
onChange={handleCategory}
name={props.id}
>
{numbers.map(l => (
<MenuItem value={l} key={l}>{l}</MenuItem>
))}
</Select>
</FormControl>
</Tooltip>
这是我的组件,当用户将鼠标悬停在它上面时,我想让它禁用
解决方案
如果你想Select
根据鼠标是否在它上面来改变它的启用状态,你可以disabled
根据鼠标进入和离开组件的时间来切换属性。
首先,您需要设置一个属性来跟踪鼠标是否在上方Select
。如果您使用的是功能组件,则可以使用useState
钩子执行此操作:
const [isOver, setIsOver] = useState(false);
然后,您需要修改Select
如下:
<Select
...otherProps
disabled={!isOver}
onMouseEnter={onEnter}
onMouseLeave={onLeave}
>
最后,您需要处理鼠标的入口和出口:
const onEnter = (e) => { setIsOver(true); }
const onLeave = (e) => { setIsOver(false); }
您可能需要做一些魔术来处理鼠标在 上MenuItems
而不是在 上Select
,但这将为您提供如何切换它的框架。
推荐阅读
- python - 从网站中提取超链接 - Selenium
- sharepoint - SharePoint Designer 2013 - 工作流缺少一些操作
- swift - 如何在不输入两次错误名称的情况下将特定错误抛到外面?
- javascript - lodash 中 keyBy 的问题。Lodash 删除了一些属性
- python - 替换/删除 Bash 中其他两行之间的行
- python - 如何从pyspark中的数据框的值创建列
- angular - 为什么添加一个材质模块时延迟加载模块块大小会增加?
- python - 从 str 完全继承(具有所有 str 构造函数)
- gitlab - /refs 下列出的 Gitlab 引用有哪些?
- angularjs - 返回未定义的值