简述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-enter
和 fade-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。这就是一个基本的淡入淡出动画。