reactjs - React js悬停元素并在离开元素时禁用悬停
问题描述
我在 react js 中有一个应用程序,有一个元素列表,当用户将鼠标悬停在元素上时,背景颜色应更改为red
. 目前它有效。我也想当我离开元素unhover
时,元素应该没有red
背景,但现在当我离开元素时,颜色不会消失。基本上,悬停应该只影响用户所在的那个元素hover
。
import "./styles.css";
import React, { memo, useEffect, useState } from "react";
const Element = ({ id }) => {
const styles = {
background: "red"
};
const [isHovered, setIsHovered] = useState(false);
return (
<div
className={isHovered ? "hovered" : ""}
onMouseOver={() => {
setIsHovered(true);
}}
>
hello {id}
</div>
);
};
export default function App() {
return (
<div className="App">
{[0, 1, 2].map((el) => {
return <Element key={el} id={el} />;
})}
</div>
);
}
演示:https
://codesandbox.io/s/compassionate-einstein-9v1ws?file=/src/App.js:0-557问题:谁能帮助解决这个问题?
解决方案
代替onMouseOver
,您可以使用onMouseEnter
和onMouseLeave
应用基于isHovered
状态的样式。
这是您更新的代码。
import "./styles.css";
import React, { memo, useEffect, useState } from "react";
const Element = ({ id }) => {
// const styles = {
// background: "red"
// };
const [isHovered, setIsHovered] = useState(false);
console.log({ isHovered });
return (
<div
// style={{ backgroundColor: isHovered ? "red" : "transparent" }}
className={"hovered"}
// onMouseEnter={() => setIsHovered(true)}
// onMouseLeave={() => setIsHovered(false)}
>
hello {id}
</div>
);
};
export default function App() {
return (
<div className="App">
{[0, 1, 2].map((el) => {
return <Element key={el} id={el} />;
})}
</div>
);
}
className
您也可以使用不使用变量来执行相同的操作state
,只针对悬停类。我已经在沙箱中使用了两者。
如果只做 with className
,你可以添加一个 className 到 div
className={"hovered"}
然后,更新css文件中类的样式。
.hovered:hover {
background: red;
}
推荐阅读
- php - CodeIgniter db 错误:布尔值上的 real_scape_string()
- asp.net-core - 在 ASP.NET core 2.1 中获取请求时间
- java - 我无法从 .jsp 中找到错误
- s4sdk - RFC 目标不存在
- php - php未使用的导入会影响性能吗?
- actionscript-3 - as3 使用 writeByte 方法将位写入 ByteArray 对象
- algorithm - 实体识别,只是一个词,而不是整句识别,NLP应该用什么算法
- java - Spring Boot - 第三方库的自动配置类之间的顺序
- php - php artisan 在本地网络上服务
- python - 使用 html 代码的 Python GUI 自动化