当前位置: 首页 > 知识库问答 >
问题:

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

梁丘扬
2023-03-14

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

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(){ 
    // empty scope right now
  }

   triggerAnimation=()=>{ 
      console.log("trigger animateRef animation")

      //   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 (
      <div>

        <p>
          Start editing to see some magic happen :)
        </p>

        <div className="animatedElementStyle" ref={this.animateRef}>
            I am rendered !
        </div>
        <button onClick={this.triggerAnimation}>
          trigger animation
        </button>
      </div>
    );
  }
}

render(<App />, 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;
    }
}

谢谢你的提示

共有1个答案

钱志义
2023-03-14

你只要改变这个

this.animateRef.current.className.concat(`animation_trigger`)

致:

 this.animateRef.current.classList.add(`animation_trigger`);
 类似资料:
  • 问题内容: 如何在 ReactJS中 手动触发click事件?当用户单击element1时,我想自动触发对标签的单击。 问题答案: 您可以使用该道具通过回调获取对基础HTMLInputElement对象的引用,将该引用存储为类属性,然后使用该引用稍后使用HTMLElement.click方法触发事件处理程序中的单击。 在您的方法中: 在事件处理程序中: 完整示例: 请注意 ES6箭头函数,该函数为

  • 问题内容: 我是ReactJS的新手。以前,我使用jQuery设置所需的任何动画或功能。但是现在我正在尝试使用ReactJS并最小化jQuery的使用。 我的情况是: 我正在尝试使用ReactJS构建手风琴。 使用JQuery : 我的问题: 我该如何使用ReactJS? 问题答案: 您应该尝试避免在ReactJS中使用jQuery。但是,如果您真的想使用它,则可以将其放入组件的component

  • 除了使用DangerouslySetInnerHTML之外,还有其他的方法吗? 谢谢!

  • 我有一个WinJS ListView,它的项目使用模板函数创建(选项指向一个函数)。返回的项目内部有一个div,该div具有win交互类,因此可以接受输入。具体来说,该div需要能够滚动以显示更多适合ListView项的内容。 滚动与应用于div的win交互类完美配合。我试图解决的问题是允许正常的单击(鼠标向下,鼠标向上)仍然触发ListView上的事件,同时仍然允许滚动ListView项中的di

  • 问题内容: 我想手动触发验证,包括使用jQueryValidate显示错误消息。 我要完成的方案是这样的形式: 单击时,仅应进行验证。点击时,仅应进行验证。但是,必须张贴所有字段。我怎样才能做到这一点?我考虑过处理click事件并手动验证表单的一部分。 问题答案: 该库似乎允许验证单个元素。只需将click事件与您的按钮相关联,然后尝试以下操作:

  • 问题内容: 我想在自己的内部加载Google API客户端库,并且会在单独的javascript文件中调用方法。然后,该方法将输出到控制台。 客户端库已加载,没有任何问题,但消息未从控制台打印出来,我认为这是因为根本没有调用该方法。 这是我的: 这是包含方法的javascript文件: 如果这是纯JavaScript,则该方法将如下所示: es6中是否有任何与对象相似的东西。 问题答案: 组件方法