本小节,我们需要使用鼠标事件,给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
的布尔值。文章来源:https://www.toymoban.com/news/detail-483100.html
- 使用内联箭头函数优化事件回调函数
// 在标签的事件里面使用布尔值作为参数传递给回调函数
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模板网!