前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React技巧之鼠标悬浮添加行内样式

React技巧之鼠标悬浮添加行内样式

作者头像
chuckQu
发布2022-08-19 15:36:34
1.8K0
发布2022-08-19 15:36:34
举报
文章被收录于专栏:前端F2E

原文链接:https://bobbyhadz.com/blog/react-inline-style-hover[1]

作者:Borislav Hadzhiev[2]

正文从这开始~

总览

在React中,鼠标悬浮时添加行内样式:

  1. 在元素上设置onMouseEnteronMouseLeave属性。
  2. 当用户鼠标移入或者移出元素时,更新state变量。
  3. 在元素上有条件地设置行内样式。
代码语言:javascript
复制
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;

react-hover-inline-styles.png

详情

我们在div元素上设置了onMouseEnteronMouseLeave 属性。

当用户的鼠标移入当前元素时,mouseenter事件会被触发。相反地,当用户的鼠标移出当前元素时,mouseleave事件会被触发。

每当用户将鼠标悬停在div上时,就会调用handleMouseEnter函数。每当用户将鼠标指针移出div元素时,就会调用handleMouseLeave函数。

我们在这两个事件处理程序中所做的就是更新一个state变量,跟踪用户是否在该元素上悬停。

我们可以使用三元运算符,来有条件地在元素上设置行内样式。

代码语言:javascript
复制
<div
  style={{
    backgroundColor: isHovering ? 'salmon' : '',
    color: isHovering ? 'white' : '',
  }}
  onMouseEnter={handleMouseEnter}
  onMouseLeave={handleMouseLeave}
>
  Hover me
</div>

三元运算符和if/else运算符非常的相似。

它检查问号左边的值是否为真值,如果是,操作符就返回冒号左边的值,否则就返回右边的值。

换句话说,如果isHovering变量存储的值为true,我们将backgroundColor属性设置为salmon,否则我们将其设置为空字符串。

总结

当用户鼠标悬停在元素上时:

  1. handleMouseEnter函数会被调用。
  2. isHovering state变量会被设置为true
  3. 有条件地在元素上设置行内样式。

相反地,当用户鼠标离开元素时:

  1. handleMouseLeave函数会被调用。
  2. isHovering state变量会被设置为false
  3. 恢复元素的样式。

参考资料

[1]

https://bobbyhadz.com/blog/react-inline-style-hover: https://bobbyhadz.com/blog/react-inline-style-hover

[2]

Borislav Hadzhiev: https://bobbyhadz.com/about

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端F2E 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总览
  • 详情
  • 总结
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档