React教程

React 动画

动画是一种将图像处理为运动图像的技术。它是制作交互式Web应用程序最常用的技术之一。在React中,我们可以使用称为React过渡组的显式组件组添加动画。
React过渡组是用于管理组件状态的附加组件,对于定义输入和退出过渡。它本身不能对样式进行动画处理。相反,它公开了过渡状态,管理类和组元素,并以有用的方式操纵DOM。
React Transition组主要有两个API 用于创建过渡。这些是:
ReactTransitionGroup: : 它用作动画的低级API。 ReactCSSTransitionGroup: : 它用作实现基本CSS过渡和动画的高级API。

安装

我们需要安装 react-transition-group 以便在React Web应用程序中创建动画。您可以使用以下命令。
$ npm install react-transition-group--save

React过渡组组件

React过渡组API提供了三个主要组件。这些是:
过渡 CSSTransition 过渡小组

转换

它具有一个简单的组件API,用于描述从一个组件状态到另一个组件状态随时间的转变。它主要用于为组件的安装和卸载设置动画。它也可以用于就地转换状态。
我们可以将Transition组件访问为四种状态:
进入 输入 退出 退出

CSSTransition

CSSTransition组件使用CSS样式表类来编写过渡并创建动画。它受到 ng-animate 库的启发。它也可以继承过渡组件的所有Props。我们可以将" CSSTransition"划分为三个状态。这些是:
出现 输入 退出
CSSTransition组件必须以一对类名的形式应用于子组件。第一类为 name-stage 形式,第二类为 name-stage-active 。例如,您提供淡入淡出的名称,并将其应用于" enter"阶段,这两个类将为 fade-enter 和 fade-enter-active 。

TransitionGroup

此组件用于管理一组过渡组件("过渡"和" CSSTransition)。这是一台状态机,可随时间控制组件的安装和卸载。过渡组件不会直接定义任何动画。在此,"列表"项的动画设置方式基于各个过渡组件。这意味着" TransitionGroup"组件在一个组件中可以具有不同的动画。
让我们看下面的示例,它显然有助于理解React动画。
示例
App.js
在App.js文件中,导入react-transition-group组件并创建CSSTransition组件,用作要制作动画的组件的包装。我们将使用 transitionEnterTimeout 和 transitionLeaveTimeout 进行CSS过渡。要在列表中插入或删除元素时使用的Enter和Leave动画。
import React, { Component } from 'react';
import { CSSTransitionGroup } from 'react-transition-group';
class App extends React.Component {
    constructor(props) {
    super(props);
    this.state = {items: ['Blockchain', 'ReactJS', 'TypeScript', 'lidihuo']};
    this.handleAdd = this.handleAdd.bind(this);
  }
  handleAdd() {
    const newItems = this.state.items.concat([
      prompt('Enter Item Name')
    ]);
    this.setState({items: newItems});
  }
  handleRemove(i) {
    let newItems = this.state.items.slice();
    newItems.splice(i, 1);
    this.setState({items: newItems});
  }
  render() {
    const items = this.state.items.map((item, i) => (
      <div key={item} onClick={() => this.handleRemove(i)}>
        {item}
      </div>
    ));
    return (
      <div>
  <h1>Animation Example</h1>
            <button onClick={this.handleAdd}>Insert Item</button>
            <CSSTransitionGroup
               transitionName="example"
           transitionEnterTimeout={800}
               transitionLeaveTimeout={600}>
               {items}
            </CSSTransitionGroup>
      </div>
    );
  }
}
export default App;
Main.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App />, document.getElementById('app'));
style.css
在您的应用程序中添加style.css文件,并添加以下CSS样式。现在,要使用此CSS文件,您需要在HTML文件中添加此文件的链接。
.example-enter {
  opacity: 0.01;
}
.example-enter.example-enter-active {
  opacity: 1;
  transition: opacity 500ms ease-in;
}
.example-leave {
  opacity: 1;
}
.example-leave.example-leave-active {
  opacity: 0.01;
  transition: opacity 300ms ease-in;
}
在上面的示例中,动画持续时间是在 CSS 和 render 方法中指定的。它告诉React组件何时从列表中删除动画类,以及何时从DOM中删除元素。
输出
何时我们执行上面的程序,它给出下面的输出。
React Animation
单击'插入项目"按钮,将显示以下屏幕。
React动画
插入项目并按确定后,新项目可以淡入样式添加到列表中。在这里,我们还可以通过单击特定链接从列表中删除任何项目。
React动画
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4