React 循环组件 && hover 实现的小效果

本文介绍了在React中如何使用和事件处理实现循环组件的hover小效果。通过在父组件中循环渲染组件,每个实例都有独立的事件管理,确保了动画效果的正确触发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hover动画预览git

在一个展示型网站一些 hover 的小效果简单又实用。
在 React 中对元素 / 组件添加 onMouseEnteronMouseLeave 即可完成鼠标移入移出事件。

Code

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

class Management extends Component {
  constructor(props) {
    super(props)
    this.state = {
      bool: false
    }
    this.handleBoolean = this.handleBoolean.bind(this)
  }

  handleBoolean(bool) {
    this.setState({ bool })
  }

  render() {
    let arr = []
    for (let i = 0; i < 5; i++)  {
      arr.push(<Show 
                bool={this.state.bool} 
                handleBoolean={this.handleBoolean} 
                key={i}
              />)
    }
    return (
      <div>
        <ul>
          {arr}
        </ul>
      </div>
    )
  }
}

class Show extends Component {
  constructor(props) {
    super(props)
    this.state = {
      bool: false
    }
    this.handleEnter = this.handleEnter.bind(this)
    this.handleOut = this.handleOut.bind(this)
  }

  handleEnter() {
    this.props.handleBoolean(true)
    this.setState({
      bool: true
    })
  }
  handleOut() {
    this.setState({
      bool: false
    })
    this.props.handleBoolean(false)
  }

  render() {
    let style = {}
    if (this.props.bool) {
      style = {
        backgroundColor: 'black',
        transition: 'all 1s'
      }
    }
    if (this.state.bool) {
      style = {
        backgroundColor : ''
      }
    }
    return <li 
            className="Abc111" 
            style={style} 
            onMouseEnter={this.handleEnter} 
            onMouseLeave={this.handleOut}>
           </li>
  }
}

export default Management

需要注意的是,组件 Show 虽然只定义了一次,但是在父组件中循环渲染了。其实挂载在 dom 上的有 N 多(本例中有5个),他们之间的 state 是独立管理的,并不是互通的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值