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

news/2024/12/22 22:43:20/

本小节,我们需要使用鼠标事件,给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.propsconst {mouseIn} = this.statereturn (<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})}

以上两种方式都可以成功实现功能,也能简化代码。


http://www.ppmy.cn/news/48019.html

相关文章

.Net中的标识框架Identity

中间件&#xff1a; 1、Authentication对访问者的用户身份进行验证&#xff0c;“用户是否登录成功”。 2、Authorization验证访问者的用户身份是否有对资源访问的访问权限&#xff0c;“用户是否有权限访问这个地址”。 简单描述 1、标识&#xff08;Identity&#xff09;框架…

轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql&#xff0c;希望将它的配置文件挂载出去&#xff0c;以便随时修改&#xff0c;可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secre…

Linux 系统调用深思:从原理到实战

Linux 系统调用揭秘&#xff1a;从原理到实战&#xff08;Demystifying Linux System Calls: From Principles to Practice&#xff09; 引言&#xff08;Introduction&#xff09;系统调用的概念&#xff08;Concept of System Calls&#xff09;Linux操作系统与系统调用的关系…

使用element-plus组件,修改date-picker默认样式

使用深度选择器来修改子组件的样式&#xff0c;今天遇到一个需求&#xff0c;在el-drawer中嵌入的el-date-picker&#xff0c;再一次总结一下深度选择器的用法&#xff0c;需求如下&#xff1a; template内容&#xff1a; <el-drawer size"70%" v-model"dr…

Golang微服务一把嗦 用户微服务集成主流最新go技术栈

声明&#xff1a;此文章为博主个人学习记录&#xff0c;仅供学习和交流&#xff0c;如有侵权请联系博主。 前言 前段时间&#xff0c;因为本地k8s环境一直出问题&#xff0c;线上云环境也用不起&#xff0c;&#xff08;后面搞定了再慢慢学习&#xff09;所以就暂时搁置了k8s学…

【C/C++】GDB 快速定位虚函数表并获取详情信息

文章目录 在GDB中&#xff0c;可以使用以下命令来查看虚函数表&#xff1a; 首先&#xff0c;使用GDB调试程序&#xff0c;并在程序运行到需要查看虚函数表的地方停下来。 然后&#xff0c;使用命令“p /x (long)object”来查看对象的地址。这个命令会输出对象的地址&#xff…

DHCP原理与配置

目录 一、DHCP工作原理 1&#xff09;了解DHCP服务 使用DHCP的好处 DHCP的分配方式 2&#xff09;DHCP的租约过程 分为四个步骤 二、DHCP服务器的配置 1&#xff09;检查并且安装dhcp有关软件包 2&#xff09;查看系统的配置文件&#xff0c;并且利用好官方给的参考案…

一起学 Java(三) 集合框架、数据结构、泛型

一、Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容&#xff1a; 接口&#xff1a;是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言&#xff0c;接口通常形成一个层次。实现&#xff08;类&#x…