第二十二章 案例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})
  }

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

相关文章
|
7月前
|
前端开发 JavaScript 索引
第二章jQuery选择器
第二章jQuery选择器
|
7月前
|
JavaScript
jquery选择器案例分享
jquery选择器案例分享
【Vue2.0学习】—键盘事件(三十三)
【Vue2.0学习】—键盘事件(三十三)
|
7月前
|
前端开发
第二十四章 案例TodoList 之props限制
第二十四章 案例TodoList 之props限制
|
JavaScript
如何用原生JS实现跑马灯效果
如何用原生JS实现跑马灯效果
212 0
如何用原生JS实现跑马灯效果
|
JavaScript 前端开发 索引
如何用原生JS写Tab切换
1. 基本思路 ① 遍历Tab选项 ② 然后给每个Tab选项绑定点击事件 ③ 每次点击时清除所有Tab选项及Tab选项内容的样式,然后给当前Tab选项添加标记样式,给当前Tab选项添加显示样式 2.
3211 1
|
Web App开发 iOS开发 JavaScript
键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
原文1:http://www.cnblogs.com/silence516/archive/2013/01/25/2876611.html 原文2:http://www.cnblogs.com/leolai/archive/2012/08/01/2618386.
2097 0
|
前端开发 JavaScript
vue简单实现书本翻页效果
偶然兴起,想要用vue来做一个书本的组件,有了这个想法后边开始动手,先简单地实现基本的效果,为后续封装为组件进行准备工作,实现该效果主要使用vue + css + JavaScript。
1279 0
vue简单实现书本翻页效果