问题描述
我有一个带有未选中复选框图标的组件。将鼠标悬停在图标上时,我将显示该图标的选中版本。我正在使用状态将鼠标进入包含图标的div时将isHovered状态设置为true,而当鼠标离开div时将其设置为false。我在div中进行条件渲染,如果isHovered状态为false,则使用未选中的图标,如果isHovered为true,则使用选中的图标。
我的组件在我的应用程序中连续使用了多次,而我的问题是,如果我将鼠标快速移到图标上,即使鼠标不再移到图标上,其中的一些也会停留在isHovered状态下。
是否有解决此问题的建议?
这是我的代码:
const [isHovered,setIsHovered] = useState(false);
const onMouseEnter = () => {
setIsHovered(true);
};
const onMouseLeave = () => {
setIsHovered(false);
};
return (
<div
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
onClick={handleArchive}
style={{ display: "flex",alignItems: "center",cursor: "pointer" }}
>
{isHovered ? (
<CheckCircleIcon
style={{ color: "grey",fontSize: 20,marginRight: 10 }}
/>
) : (
<RadioButtonUncheckedIcon
style={{ color: "grey",marginRight: 10 }}
/>
)}
</div>
解决方法
解决方案1:
const [isHovered,setIsHovered] = useState(false);
return (
<div
onMouseEnter={() => setIsHovered(!isHovered)}
onMouseLeave={() => setIsHovered(!isHovered)}
onClick={handleArchive}
style={{ display: "flex",alignItems: "center",cursor: "pointer" }}
>
{isHovered ? (
<CheckCircleIcon
style={{ color: "grey",fontSize: 20,marginRight: 10 }}
/>
) : (
<RadioButtonUncheckedIcon
style={{ color: "grey",marginRight: 10 }}
/>
)}
</div>
解决方案2:一种简单的纯css解决方案