# React技巧之鼠标悬浮添加行内样式
原文链接:https://bobbyhadz.com/blog/react-inline-style-hover (opens new window)
作者:Borislav Hadzhiev (opens new window)
正文从这开始~
# 总览
在React中,鼠标悬浮时添加行内样式:
- 在元素上设置
onMouseEnter和onMouseLeave属性。 - 当用户鼠标移入或者移出元素时,更新
state变量。 - 在元素上有条件地设置行内样式。
import {useState} from 'react';
const App = () => {
const [isHovering, setIsHovering] = useState(false);
const handleMouseEnter = () => {
setIsHovering(true);
};
const handleMouseLeave = () => {
setIsHovering(false);
};
return (
<div>
<div>
<div
style={{
backgroundColor: isHovering ? 'salmon' : '',
color: isHovering ? 'white' : '',
}}
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
>
Hover me
</div>
</div>
</div>
);
};
export default App;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 详情
我们在div元素上设置了onMouseEnter 和 onMouseLeave ****属性。
当用户的鼠标移入当前元素时,mouseenter事件会被触发。相反地,当用户的鼠标移出当前元素时,mouseleave事件会被触发。
每当用户将鼠标悬停在div上时,就会调用handleMouseEnter函数。每当用户将鼠标指针移出div元素时,就会调用handleMouseLeave函数。
我们在这两个事件处理程序中所做的就是更新一个
state变量,跟踪用户是否在该元素上悬停。
我们可以使用三元运算符,来有条件地在元素上设置行内样式。
<div
style={{
backgroundColor: isHovering ? 'salmon' : '',
color: isHovering ? 'white' : '',
}}
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
>
Hover me
</div>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
三元运算符和if/else运算符非常的相似。
它检查问号左边的值是否为真值,如果是,操作符就返回冒号左边的值,否则就返回右边的值。
换句话说,如果isHovering变量存储的值为true,我们将backgroundColor属性设置为salmon,否则我们将其设置为空字符串。
# 总结
当用户鼠标悬停在元素上时:
handleMouseEnter函数会被调用。isHoveringstate变量会被设置为true。- 有条件地在元素上设置行内样式。
相反地,当用户鼠标离开元素时:
handleMouseLeave函数会被调用。isHoveringstate变量会被设置为false。- 恢复元素的样式。