ReactJS 教程

ReactJS - 主页 ReactJS - 简介 ReactJS - 路线图 ReactJS - 安装 ReactJS - 功能 ReactJS - 优势和缺点 ReactJS - 架构 ReactJS - 创建 React 应用程序 ReactJS - JSX ReactJS - 组件 ReactJS - 嵌套组件 ReactJS - 使用组件 ReactJS - 集合组件 ReactJS - 样式 ReactJS - 属性 (props) ReactJS - 使用属性创建组件 ReactJS - props 验证 ReactJS - 构造函数 ReactJS - 组件生命周期 ReactJS - 事件管理 ReactJS - 创建事件感知组件 ReactJS - Expense Manager 事件 ReactJS - 状态管理 ReactJS - 状态管理 API ReactJS - 无状态组件 ReactJS - Hooks 进行状态管理 ReactJS - Hooks 的组件生命周期 ReactJS - 布局组件 ReactJS - 分页 ReactJS - Material UI ReactJS - Http 客户端编程 ReactJS - 表单编程 ReactJS - 受控组件 ReactJS - 非受控组件 ReactJS - Formik ReactJS - 条件渲染 ReactJS - 列表 ReactJS - Key 键 ReactJS - 路由 ReactJS - Redux ReactJS - 动画 ReactJS - Bootstrap ReactJS - Map ReactJS - 表格 ReactJS - 使用 Flux 管理状态 ReactJS - 测试 ReactJS - CLI 命令 ReactJS - 构建和部署 ReactJS - 示例

Hooks

ReactJS - Hooks 简介 ReactJS - 使用 useState ReactJS - 使用 useEffect ReactJS - 使用 useContext ReactJS - 使用 useRef ReactJS - 使用 useReducer ReactJS - 使用 useCallback ReactJS - 使用 useMemo ReactJS - 自定义 Hooks

ReactJS 高级

ReactJS - 可访问性 ReactJS - 代码拆分 ReactJS - 上下文 ReactJS - 错误边界 ReactJS - 转发 Refs ReactJS - 片段 ReactJS - 高阶组件 ReactJS - 与其他库集成 ReactJS - 优化性能 ReactJS - Profiler API ReactJS - Portals ReactJS - 不使用 ES6 ECMAScript ReactJS - 不使用 JSX 的 React ReactJS - Reconciliation ReactJS - Refs 和 DOM ReactJS - 渲染道具 ReactJS - 静态类型检查 ReactJS - 严格模式 ReactJS - Web 组件

其他概念

ReactJS - 日期选择器 ReactJS - Helmet ReactJS - 内联样式 ReactJS - PropTypes ReactJS - BrowserRouter ReactJS - DOM ReactJS - 轮播 ReactJS - 图标 ReactJS - 表单组件 ReactJS - 参考 API

ReactJS 有用资源

ReactJS - 快速指南 ReactJS - 备忘录 Axios - 备忘录 ReactJS - 有用资源 ReactJS - 讨论


ReactJS - AnimationEvent 处理程序

在 React 中,AnimationEvent 处理程序是响应 Web 应用程序中的 CSS 动画事件的函数。这些事件使我们能够在动画生命周期的各个阶段执行某些操作,例如动画开始、重复和结束时。因此,我们将在本教程中了解如何在 React 应用程序中使用 AnimationEvent 处理程序。

如何使用它?

一种用于 CSS 动画事件的事件处理程序。

<div
   onAnimationStart={e => console.log('onAnimationStart')}
   onAnimationIteration={e => console.log('onAnimationIteration')}
   onAnimationEnd={e => console.log('onAnimationEnd')}
/>

AnimationEvent 处理程序参数

在 React 中创建 AnimationEvent 处理程序时,我们只有一个参数,通常称为 e("event"的缩写)。此参数是一个 React 事件对象,其中包含有关动画事件的信息。此事件对象包含 AnimationEvent 特有的额外功能,如 −

Sr.No 属性和说明
1 animationName

此属性指定触发事件的动画的名称。当我们的应用程序中有几个动画并且想知道哪个动画当前处于活动状态时,它会派上用场。

2 elapsedTime

elapsedTime 属性提供自动画开始以来的时间(以秒为单位)。此属性可用于识别动画的进度,并根据经过的时间执行某些操作。

3 pseudoElement

CSS 中的伪元素(如 ::before 和 ::after)允许我们为元素的某些区域设置样式。 pseudoElement 属性定义哪个伪元素受动画事件影响,如果我们的动画包含某些伪元素,则可以让我们更好地控制。

现在我们已经介绍了 AnimationEvent 处理程序及其参数,让我们创建一个基本的 React 应用程序来将我们所学到的知识付诸实践。

示例

示例 − 更改背景颜色

我们将创建一个基本的 React 应用程序来展示 AnimationEvent 处理程序的使用。因此,我们将有一个通过 CSS 动画更改其背景颜色的框。

App.js

import React from 'react';
import './App.css';

class App extends React.Component {
   handleAnimationStart(e) {
      console.log('Animation started:', e.animationName);
   }   
   handleAnimationEnd(e) {
      console.log('Animation ended:', e.animationName);
   }   
   render() {
      return (
         <div className="box" onAnimationStart={this.handleAnimationStart} onAnimationEnd={this.handleAnimationEnd}>
            CSS Animation Demo
         </div>
      );
   }
}

export default App;

App.css

.box {
   width: 200px;
   height: 200px;
   background-color: red;
   animation: colorChange 3s infinite;
}

@keyframes colorChange {
   0% {
      background-color: red;
   }
   50% {
      background-color: blue;
   }
   100% {
      background-color: red;
   }
}

输出

css animation demo

在上面的例子中,我们有一个简单的 React 类组件,其中包含两个事件处理程序:handleAnimationStart 和 handleAnimationEnd。当动画开始和结束时,这些处理程序会将消息记录到控制台。

当我们打开浏览器的开发者控制台时,我们将看到显示动画开始和结束时间的通知,以及动画的名称。

示例 − 样式化动画

在此 React 应用中,我们将使用 CSS 样式化动画。我们将使用应用于 styled-animation-div 类的滑动动画(滑入)。动画从元素平移到视口外开始,并在 5 秒的持续时间内逐渐将其移动到原始位置。

App.js

import React from 'react';
import './App.css'; // 导入对应的CSS文件

const App = () => {
   return (
      <div
         onAnimationStart={() => console.log('onAnimationStart')}
         onAnimationIteration={() => console.log('onAnimationIteration')}
         onAnimationEnd={() => console.log('onAnimationEnd')}
         className="styled-animation-div"
         >
         Styled React App with Animation
      </div>
   );
};

export default App;

App.css

.styled-animation-div {
   /* Add desired styles and animations here */
   animation: slide-in 5s ease-in-out;
   color: chocolate;
}

@keyframes slide-in {
   0% {
      transform: translateX(-100%);
   }
   100% {
      transform: translateX(0);
   }
}

输出

styled reactapp animation

示例 − 淡入应用

这是另一个具有不同动画的 React 应用示例。在此我们将创建 App.js 和 App.css 文件。该应用将使用应用于 fade-in-div 类的淡入动画 (fade-in)。元素从零不透明度开始,并在 5 秒内逐渐变为完全不透明。

App.js

 
import React from 'react';
import './App.css'; // 导入对应的CSS文件

const App = () => {
   return (
      <div
         onAnimationStart={() => console.log('onAnimationStart')}
         onAnimationIteration={() => console.log('onAnimationIteration')}
         onAnimationEnd={() => console.log('onAnimationEnd')}
         className="fade-in-div"
         >
         React App with Fade-In Animation
      </div>
   );
};

export default App;

App.css

.fade-in-div {
   opacity: 0;
   animation: fade-in 5s ease-in-out;
   color: rgb(88, 27, 5);
}

@keyframes fade-in {
   0% {
      opacity: 0;
   }
   100% {
      opacity: 1;
   }
}

输出

淡入动画

摘要

我们已成功使用 AnimationEvent 处理程序和参数构建 React 应用程序。这些知识现在可以应用于管理更复杂的动画并在我们的在线应用程序中构建有趣的用户体验。

reactjs_reference_api.html