React 入门:实战案例 TodoList Item鼠标悬浮效果

这篇具有很好参考价值的文章主要介绍了React 入门:实战案例 TodoList Item鼠标悬浮效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文实现鼠标悬浮到 Todo 记录上时的样式,以及悬浮到 Item 组件 UI 上时,显示【删除】按钮,鼠标离开时隐藏【删除】按钮。

目标实现效果

react鼠标悬浮事件,React 学习实战笔记,react.js,javascript,前端

实现思路

本文通过给事件处理来实现。(如果你对 React 的事件处理不了解,请阅读本专栏前面的【事件处理】章节)

  • onMouseEnter:当鼠标悬浮到某个元素上时,会触发该事件。
  • onMouseLeave:当鼠标从某个元素上离开时,会触发该事件。

当然,通过 CSS 也可以实现。此处不做讲解。

实现步骤

第一步:Item 组件中定义一个 mouse 的 state 属性

在 Item 组件中定义一个 mouse 的 state 属性,用来存储鼠标悬浮状态,代码片段如下:

// src/components/Item/index.jsx

state = { mouse: false };

第二步:定义悬浮事件回调

在 Item 组件中定义鼠标悬浮事件回调处理方法,用来控制鼠标悬浮和离开某个 Todo Item 时的样式,及【删除】按钮的显示与隐藏,代码片段如下:

// src/components/Item/index.jsx

// 定义鼠标悬浮回调函数【注意:用到了高阶函数】
handleMouse = (flag) => {
  return () => {
    this.setState({ mouse: flag });
  };
};

第三步:绑定事件处理,及悬浮样式控制

  • 给 Todo Item 组件的 DOM 绑定悬浮事件处理;
  • 通过状态控制 Todo Item 组件的样式。

代码片段如下:

// src/components/Item/index.jsx

render() {
    const { name, done } = this.props;
    const { mouse } = this.state;
    return (
      <li
        style={{ backgroundColor: mouse ? "#eee" : "#fff" }}
        onMouseEnter={this.handleMouse(true)}
        onMouseLeave={this.handleMouse(false)}
      >
        <label className="container">
          <input type="checkbox" defaultChecked={done} />
          <span>{name}</span>
        </label>
        <button
          className="btn btn-danger btn-sm"
          style={{ display: mouse ? "block" : "none" }}
        >
          删除
        </button>
      </li>
    );
  }

至此,完成了 Todo Item 的鼠标悬浮效果。文章来源地址https://www.toymoban.com/news/detail-523539.html

完整代码

Item 组件完整代码

// src/components/Item/index.jsx

import React, { Component } from "react";
import "./index.css";

export default class Item extends Component {
  state = { mouse: false };

  handleMouse = (flag) => {
    return () => {
      this.setState({ mouse: flag });
    };
  };

  render() {
    const { name, done } = this.props;
    const { mouse } = this.state;
    return (
      <li
        style={{ backgroundColor: mouse ? "#eee" : "#fff" }}
        onMouseEnter={this.handleMouse(true)}
        onMouseLeave={this.handleMouse(false)}
      >
        <label className="container">
          <input type="checkbox" defaultChecked={done} />
          <span>{name}</span>
        </label>
        <button
          className="btn btn-danger btn-sm"
          style={{ display: mouse ? "block" : "none" }}
        >
          删除
        </button>
      </li>
    );
  }
}

到了这里,关于React 入门:实战案例 TodoList Item鼠标悬浮效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React入门 - 06(TodoList 列表数据的新增和删除)

    本章内容 上一节内容我们完成了输入框中可以自由输入内容,这一节我们继续 TodoList 功能的完善:列表数据的新增和删除。 在开始之前,我们先介绍一下 React 如何渲染数组数据到界面上。打开官网,在这里明确告诉我们列表的渲染可以使用数组的 map 或者 filter 方法 一、实

    2024年01月25日
    浏览(30)
  • Vue实现鼠标悬浮隐藏与显示图片效果 @mouseenter 和 @mouseleave事件

    前端vue 有个功能是鼠标移动到指定item上显示出来一个编辑和删除的图标 鼠标悬停在列表那么需要有悬浮显示的列表编辑和删除icon 文字不好描述,因为是web端录屏也比较麻烦 这里用截图说明 之前没做过这种效果,问了一下我的组长-豪哥 他告诉我很简单,利用vue的@mouseent

    2023年04月08日
    浏览(84)
  • echarts饼图:实现多层图表同步自动轮播,鼠标悬浮时停止轮播,移出鼠标后重新开始轮播效果

    需要用echarts实现一个圆环饼图,在圆环中心显示每个系列的具体数据,加载成功后图表系列自动高亮轮播展示;当用户鼠标悬浮某一系列的图形时,停止自动轮播并高亮显示该图形,移出鼠标后重新开始轮播 echarts圆环饼图示例 (开发echarts图表时,对照配置项文档和API文档

    2024年02月13日
    浏览(50)
  • Vue - 实现垂直菜单分类栏目,鼠标移入后右侧出现悬浮二级菜单容器效果(完整示例源码,详细代码注释,一键复制开箱即用)

    网上的教程都太乱了,各种杂乱无注释代码、图片资源丢失、一堆样式代码,根本无法改造后应用到自己的项目中。 本文实现了 在 Vue / Nuxt 项目中,垂直分类菜单项,当用户鼠标移入菜单后,右侧自动出现二级分类悬浮容器盒子效果, 您可以直接复制源码,然后按照您的需

    2024年02月11日
    浏览(44)
  • MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

    Swagger是一个规范且完整API文档管理框架,可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确

    2024年02月21日
    浏览(40)
  • MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-系统数据集合设计

    前几章教程我们把ToDoList系统的基本框架搭建好了,现在我们需要根据我们的需求把ToDoList系统所需要的系统集合(相当于关系型数据库中的数据库表)。接下来我们先简单概述一下这个系统主要需要实现的功能以及实现这些功能我们需要设计那些数据库集合。 MongoDB从入门到

    2024年02月21日
    浏览(37)
  • 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

    往期回顾: 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 鼠标悬浮弹出对话框的功能:最终要实现纯代码设计出一个音量按钮,当鼠标悬浮

    2024年04月23日
    浏览(40)
  • 【Android入门到项目实战-- 11.1】—— 实现悬浮按钮

            悬浮按钮是悬浮于界面之上,滑动屏幕时按钮不会跟随屏幕移动,它是Design Support库中提供的一个控件,这个控件可以帮助我们轻松实现悬浮按钮效果。         下面实现一个发布的悬浮按钮。        由于需要用到floatingActionButton,所以先导入,可参考这篇文

    2024年02月13日
    浏览(41)
  • Vue2-浏览器本地存储(WebStorage)及完善TodoList案例、组件自定义事件及完善TodoList案例

    🥔:山不向我走来,我便向它走去 更多Vue知识请点击——Vue.js 存储内容大小一般支持5MB左右(不同浏览器可能还不一样) 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。 1.相关API (1) xxxxxStorage.setItem(\\\'key\\\', \\\'value\\\'); 该方法接受一个键和值作为参

    2024年02月12日
    浏览(52)
  • vue小案例TodoList

    1.首先我们分析怎么把一个页面拆成多个组件,如下图,我们可以拆成MyHeader、MyList、MyItem、MyFooter,其中MyList包含MyItem 2.观看如下代码(我们把MyItem作为MyList的子组件,在父组件中使用v-for指令来循环展示子组件,我们选择把数据放在MyList中,我们在子组件中使用props来接收父

    2024年02月06日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包