📅  最后修改于: 2023-12-03 15:22:52.450000             🧑  作者: Mango
过渡组件是用于在 React 应用程序中添加过渡效果的组件。它基于类似于 CSS3 过渡的思想。这使得过渡组件具有很高的灵活性和可配置性。
要使用过渡组件,需要安装 react-transition-group
包。
可以通过以下命令进行安装:
npm install react-transition-group --save
或者,如果使用的是 Yarn 包管理器,则可以使用以下命令安装:
yarn add react-transition-group
下面是一个用于显示如何使用过渡组件的简单示例:
import { CSSTransition } from 'react-transition-group';
const Fade = ({ children, ...props }) => (
<CSSTransition
{...props}
timeout={500}
classNames="fade"
>
{children}
</CSSTransition>
);
const App = () => (
<div>
<button onClick={() => setShow(!show)}>
{show ? 'Hide' : 'Show'}
</button>
<Fade in={show}>
<div className="my-element">
Hello, world!
</div>
</Fade>
</div>
);
在这个示例中,我们定义了一个名为 Fade
的组件,它是基于 CSSTransition
组件创建的。当 in
属性为 true
时,这个组件会将其包含的子组件使用 fade
CSS 类名添加到 DOM 中,并通过过渡效果消失。
在 CSSTransition
组件中,我们可以使用不同的 CSS 类名来表示不同的过渡状态。以下是可用的 CSS 类名:
enter
: 当子元素第一次进入时添加。enter-active
: 进入过渡状态时添加。这个类可以用于定义过渡的持续时间、延迟时间、动画方式等。enter-done
: 过渡结束时添加。exit
: 当子元素准备离开时添加。exit-active
: 离开过渡状态时添加。同样,这个类可以用于定义过渡的持续时间、延迟时间、动画方式等。exit-done
: 过渡完成时添加。要使用这些类名,我们需要在 CSS 中定义它们,并将它们应用于相关元素。
以下是一个可用于在元素进入和离开时使用不同背景颜色的示例:
.fade-enter {
opacity: 0;
background: yellow;
}
.fade-enter-active {
opacity: 1;
background: green;
transition: opacity 500ms, background-color 500ms;
}
.fade-exit {
opacity: 1;
background: green;
}
.fade-exit-active {
opacity: 0;
background: yellow;
transition: opacity 500ms, background-color 500ms;
}
注意,在这个示例中,我们同时对不透明度和背景颜色定义了过渡效果。
以下是 CSSTransition
组件可用的主要属性:
in
boolean
timeout
number | { enter?: number, exit?: number }
{ enter: 500, exit: 250 }
)。classNames
string | { enter?: string, exit?: string, active?: string }
{ enter: 'fade-enter', exit: 'fade-exit', active: 'fade-enter-active' }
)。onEnter
(node: HTMLElement, appearing: boolean) => void
node
参数是正在添加过渡效果的元素的 DOM 节点。appearing
参数指示元素是否正在第一次出现。onEntering
(node: HTMLElement, appearing: boolean) => void
node
和 appearing
参数与 onEnter
中的相同。onEntered
(node: HTMLElement, appearing: boolean) => void
node
和 appearing
参数与 onEnter
中的相同。onExit
(node: HTMLElement) => void
node
参数是正在添加过渡效果的元素的 DOM 节点。onExiting
(node: HTMLElement) => void
node
参数与 onExit
中的相同。onExited
(node: HTMLElement) => void
node
参数与 onExit
中的相同。过渡组件提供了在 React 应用程序中添加过渡效果的一种简单方法。它的灵活性和可配置性使得可以为不同的元素和状态定制不同的过渡效果。