如何在ReactJS中使用ref来触发动画。

14 浏览
0 Comments

如何在ReactJS中使用ref来触发动画。

这是我的演示:https://stackblitz.com/edit/react-pwdkse 注意:请使用您的浏览器控制台而不是Stackblitz的控制台。浏览器控制台在信息反馈方面更加完整。

我希望使用ReactJS的ref引用来触发动画,而不是在元素范围内更改className。目前没有任何反应。

我可能漏掉了什么吗?

这是我的React代码片段:

组件

import React, { Component } from 'react';
import { render } from 'react-dom'; 
import './style.module.css';
class App extends Component {
  constructor() {
    super();
    this.state = {
      name: 'React'
    };
     this.animateRef = React.createRef();
  //  this.triggerAnimation = this.triggerAnimation.bind(this);
  }
  componentDidMount(){ 
    // 现在是空的范围
  }
   triggerAnimation=()=>{ 
      console.log("触发animateRef动画")
      //   this.animateRef.current.style.animationName="animateElement"
      //  this.animateRef.current.style.animation="1.5s 4.3s 3 alternate forwards"
       this.animateRef.current.className.concat(`animation_trigger`)
        console.log("animateRef: ", this.animateRef)
  }
  render() {
    return (
          开始编辑以查看一些神奇的事情 :)
            我被渲染了!
        
    );
  }
}
render(, document.getElementById('root'));

样式表

h1, p {
  font-family: Arial;
}
.animatedElementStyle{ 
    position:absolute;
    top:61%;
    left:10%;
    width:15w;
    height:25vh;
    visibility: hidden; 
    opacity:0;    
}
.animation_trigger{
    animation: animateElement 1.5s 0.5s 3 alternate forwards;
}
@keyframes animateElement{
    from{  
        opacity:0;
        visibility:hidden; 
    }
    100%{
        transform: translate(15%,0);
        opacity:1;
        visibility:visible;
        color:orange;
        font-size:3em;
    }
}

感谢任何提示。

0
0 Comments

问题的原因是在ReactJS中使用ref触发动画时,使用了错误的方法来添加类名。原本的代码使用了className.concat(`animation_trigger`)来添加类名,但是这个方法并不会改变原始的字符串,而是返回一个与之前字符串连接的新字符串。因此,动画并没有被触发。

解决方法是使用classList.add(`animation_trigger`)来添加类名。classList是DOM元素的一个属性,它提供了一组方法来操作元素的类名。通过使用add方法来添加类名,可以正确地触发动画效果。

另外,还需要确保在('animation_trigger}')中删除多余的}符号。

这样修改后的代码就能够正确地触发动画了。

0