简述React中组件间过渡动画如何实现?

在 React 中,我们可以使用 React Transition Group 这个库来实现组件间的过渡动画。React Transition Group 提供了一种在 React 组件进入或离开 DOM 时应用动画的方式。React Transition Group 不是直接实现动画,而是提供了在动画开始和结束时的钩子函数,我们可以在这些函数中使用 CSS 或者 JavaScript 来实现动画效果。

以下是一个基本的使用示例:

import { CSSTransition } from 'react-transition-group';

function FadeComponent({ in: inProp }) {
  return (
    <CSSTransition in={inProp} timeout={500} classNames="fade">
      <div className="fade">Hello, I am a fading component</div>
    </CSSTransition>
  );
}

在这个例子中,CSSTransition 组件控制着 div 的动画。当 in prop 变为 true 时,div 将会“进入”并开始动画,当 in prop 变为 false 时,div 将会“离开”并结束动画。

classNames prop 定义了在动画开始和结束时应用到 div 的 CSS 类。例如,当动画开始时,div 将会获得 fade-enterfade-enter-active 的 CSS 类,当动画结束时,这些 CSS 类将会被移除。

然后,我们可以在 CSS 中定义这些类的样式:

.fade-enter {
  opacity: 0;
}
.fade-enter-active {
  opacity: 1;
  transition: opacity 500ms;
}
.fade-exit {
  opacity: 1;
}
.fade-exit-active {
  opacity: 0;
  transition: opacity 500ms;
}

在这个样式中,我们定义了 div 在动画开始和结束时的样式。在动画开始时,div 的透明度将会从 0 变为 1,在动画结束时,透明度将会从 1 变为 0。这就是一个基本的淡入淡出动画。

发表评论

后才能评论