javascript – 使用transitionend事件监听器和react来创建转换

我正在尝试进行一个简单的过渡,在按钮单击时做出反应,其中body max-height在componentwill update上变为0,然后在componentDidUpdate上变回500px或100%.从我见过的其他问题来看,我并不是很了解它,所以有人可以给我一个例子,说明它是如何工作的吗?

我也不介意使用reactcsstransitiongroup的示例/解释.

更多信息

我理解transitionend会附加一个事件监听器,但我对此感到困惑的是如何使用它来确保组件在转换完成之前不会更新(我已经教会了自己的反应以及几乎所有的编码知识所以我不知道这是不是很难理解,但现在对我来说很难.谢谢大家!

最佳答案
所以经过一段时间的休息,我决定是时候再来一章“学生教学生”(由我指导并主演).

为了更自觉地解决我自己的问题,transitionend事件监听器将一个监听器附加到一个元素,并在转换结束时触发一个回调函数.我遇到的问题是这是异步的,因此,将它放入componentwillUpdate将无法工作,因为DOM将在转换完成之前呈现.我目前的解决方法是让按钮单击调用包含事件侦听器的函数,并使用trnasitionend的回调函数更改组件的状态.这样,在转换完成之前不会进行渲染.

码:

class Button2 extends React.Component {
  constructor(props){
    super(props)
    this.onClickHandler = this.onClickHandler.bind(this)
  }

  onClickHandler(){
    this.props.onClick("Button2")
  }

  render() {
    return (
        

codepen
(查看codepen

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...