第二十二章 案例TodoList之鼠标事件

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

本小节,我们需要使用鼠标事件,给Item组件添加背景颜色,并显示删除按钮。

添加鼠标移入和移出事件

import React, { Component } from 'react'
import "./index.css"
export default class Item extends Component {

  // 初始化状态数据
  state = {mouseIn:false}

  // 鼠标移入事件
  enterHandle = () => {
   this.setState({mouseIn:true})
  }

  // 鼠标移出事件
  outHandle = () => {
    this.setState({mouseIn:false})
  }

  render() {
    const {name,done} = this.props
    const {mouseIn} = this.state
    return (
      <li onMouseEnter={this.enterHandle} onMouseLeave={this.outHandle}  style={{backgroundColor: mouseIn?'gainsboro':''}}>
            <label>
              <input type="checkbox" defaultChecked={done}/>
              <span>{name}</span>
            </label>
            <button className="btn btn-danger" style={{display:mouseIn?"block":"none"}}>删除</button>
      </li>
    )
  }
}

主要的改造点:

  • 初始化一个状态数据,用于控制背景颜色和删除按钮
// 初始化状态数据
  state = {mouseIn:false}

当值为true的时候,背景颜色变为灰色,删除按钮显示。为false的时候,背景颜色变回白色,删除按钮隐藏。

  • 新增鼠标移入事件处理
// 鼠标移入事件
  enterHandle = () => {
   this.setState({mouseIn:true})
  }

此时修改值为true,背景颜色变为了灰色,删除按钮显示。

  • 新增鼠标移出事件处理
  // 鼠标移出事件
  outHandle = () => {
    this.setState({mouseIn:false})
  }

此时修改值为false,背景颜色变为了白色,删除按钮隐藏。


简化事件代码

之前我们学习过如何简化事件中的代码:使用高阶函数或者内联的箭头函数

  • 使用函数柯里化优化事件回调函数
// 在标签事件里面使用布尔值作为参数传递给回调函数
onMouseEnter={this.mouseHandle(true)} onMouseLeave={this.mouseHandle(false)}
  // 鼠标移入移出回调函数 
  mouseHandle = (flag) => {
    return () => {
      this.setState({mouseIn:flag})
    }
  }

当我们鼠标移入时,传一个true的布尔值,鼠标移出时,传入一个false的布尔值。

  • 使用内联箭头函数优化事件回调函数
// 在标签的事件里面使用布尔值作为参数传递给回调函数
onMouseEnter={()=>this.mouseHandle(true)} onMouseLeave={()=>this.mouseHandle(false)}

 // 鼠标移入移出回调函数 
  mouseHandle = (flag) => {
    this.setState({mouseIn:flag})
  }

以上两种方式都可以成功实现功能,也能简化代码。文章来源地址https://www.toymoban.com/news/detail-483100.html

到了这里,关于第二十二章 案例TodoList之鼠标事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 第二十二章 开发Productions - ObjectScript Productions - 生成警报

    如果发生警报事件,警报会在生产运行时向适用的用户发送通知。目的是提醒系统管理员或服务技术人员存在问题。可以通过电子邮件、文本寻呼机或其他机制发送警报。所有警报还会将消息写入 IRIS 事件日志,类型为警报。 生产警报机制的工作原理如下: 当为 Productions 创

    2024年02月07日
    浏览(87)
  • UNIX网络编程卷一 学习笔记 第二十二章 高级UDP套接字编程

    TCP是一个字节流协议,又使用滑动窗口,因此没有记录边界或发送者数据发送能力超过接收者接收能力之类的事情,但对于UDP,每个输入操作对应一个UDP数据报(一个记录),因此当收取的数据报大于引用的输入缓冲区时就有问题。 UDP是不可靠协议,但有些应用确实有理由使

    2024年02月12日
    浏览(60)
  • 第二章:25+ Python 数据操作教程(第二十二节如何从 R 调用或运行 python)持续更新

    本文介绍了如何从 R 调用或运行 python。这两种工具都有自己的优点和缺点。使用这两个工具中最好的包和功能并将其组合起来总是一个好主意。在数据科学领域,这些工具在使用方面拥有良好的市场份额。R 主要以数据分析、统计建模和可视化而闻名。而Python在深度学习和自

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

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

    2024年02月12日
    浏览(55)
  • React 入门:实战案例 TodoList Item鼠标悬浮效果

    本文实现鼠标悬浮到 Todo 记录上时的样式,以及悬浮到 Item 组件 UI 上时,显示【删除】按钮,鼠标离开时隐藏【删除】按钮。 本文通过给事件处理来实现。 (如果你对 React 的事件处理不了解,请阅读本专栏前面的【事件处理】章节) onMouseEnter:当鼠标悬浮到某个元素上时

    2024年02月12日
    浏览(34)
  • STP和MTP(第二十二课)

    2、如何实现 1)在MSTP网络种,引入了域的概念,称为MST域 2)每一个MST域中包含一个或多个“生成树”称为“实例” 3)每个“实例生成树”都可以绑定vlan,实现vlan数据流的负载分担/负载均衡 4)默认情况下,所有的vlan都属于“实例树0:即:instance 0” 5)不同的“实例树”、

    2024年02月15日
    浏览(49)
  • 【从零开始学习JAVA | 第二十二篇】BigInteger

    目录  前言:  BigInterger: BigInteger常见的方法: 总结:         本篇我们将介绍BigInteger这个比较实用一点的API,这个API在我们实际写项目中都是很实用的API,因此大家应该对这个API有更加熟练的掌握。 在Java中,整数类型int和long的取值范围是有限的,超出该范围的整数无法

    2024年02月15日
    浏览(69)
  • Linux学习第二十二节-网卡IP设置

    1. 修改网卡IP地址 方式一:通过修改 网卡配置文件 修改 网卡配置文件位置: /etc/sysconfig/network-scripts/网卡名 #ifconfig   表示用于显示和设置网卡的参数 #ip addr   表示用于显示和设置网卡的参数   #systemctl restart network 表示重启网络 #ifup 网卡名 表示启动该网卡设备 #ifdown 网卡

    2024年02月17日
    浏览(61)
  • 【从零开始学习C++ | 第二十二篇】C++新增特性(下)

    目录 前言: 类型推导: constexpr: 初始化列表: 基于范围的for循环: 智能指针之unique ptr Lambda表达式: 总结:         本文我们将继续介绍   C++ 11 新增十大特性的剩余六个,如果没有看过介绍前四个特性的小伙伴的可以点进我C++的专栏就可以看到。 类型推导(

    2024年02月14日
    浏览(63)
  • 【设计模式】第十二章:观察者模式详解及应用案例

    【设计模式】七大设计原则 【设计模式】第一章:单例模式 【设计模式】第二章:工厂模式 【设计模式】第三章:建造者模式 【设计模式】第四章:原型模式 【设计模式】第五章:适配器模式 【设计模式】第六章:装饰器模式 【设计模式】第七章:代理模式 【设计模式

    2024年02月13日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包