为了账号安全,请及时绑定邮箱和手机立即绑定

关于react事件冲突

关于react事件冲突

喵喵时光机 2019-03-08 18:15:44
假设当前有5个div,每个div都有一个hover事件,当hover时这个div会执行一段动画,当已匀速去依次hover时,事件效果正常,但当你迅速移过它们时,就会出现一个动画还没结束,另外一个动画又开始,该如何去避免这样的现像?动画效果是用css3实现的。我的做法是用setTimeout,但是,没有效果,所以向各位请教怎么处理这个问题?大致的代码:   enterFunc(index){         this.setState({             currenIndex:index         })   }   render(){       return (            <div className="test">                {   //class 'on'里有动画                  this.props.arr.map((item,index) => {                      <div                       className={this.state.currentIndex === index?'list on':'list'}                      onMouseEnter={this.enterFunc.bind(this,index)}                      >                           //内容。。                      </div>                  })                }            </div>       )   }
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

使用一个布尔值变量来控制,当hover后,判断是否为真,为真,直接退出,否则设置为真,动画执行完后再设置为假


查看完整回答
反对 回复 2019-03-19
?
慕村9548890

TA贡献1884条经验 获得超4个赞

举个例子,每个定时器使用之前先关闭:


var timer = null; //定时器

timer = setInterval(function(){

    clearInterval(timer);//不管定时器开没开,都清除一次

    //这里再写其它代码

},1000);


查看完整回答
反对 回复 2019-03-19
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

onmouseout时,直接将这个动画样式移除掉。


查看完整回答
反对 回复 2019-03-19
  • 3 回答
  • 0 关注
  • 632 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号