TransitionGroup
是 React 中的一个组件,用于管理一组组件的进入和离开动画。它通常与 CSSTransition
组件一起使用,以实现平滑的过渡效果。TransitionGroup
会跟踪其子组件的挂载和卸载,并在子组件变化时自动应用过渡效果。
TransitionGroup
自动管理子组件的进入和离开动画,减少了手动管理动画的复杂性。CSSTransition
组件结合使用,支持多种过渡效果,如淡入淡出、滑动等。TransitionGroup
主要有以下几种类型:
TransitionGroup
来实现平滑的过渡效果。TransitionGroup
来实现动画效果。TransitionGroup
来实现平滑的过渡效果。以下是一个简单的示例,展示如何使用 TransitionGroup
和 CSSTransition
实现列表项的动态添加和删除动画:
import React, { useState } from 'react';
import { TransitionGroup, CSSTransition } from 'react-transition-group';
import './App.css';
function App() {
const [items, setItems] = useState([{ id: 1, text: 'Item 1' }, { id: 2, text: 'Item 2' }]);
const addItem = () => {
const newItem = { id: items.length + 1, text: `Item ${items.length + 1}` };
setItems([...items, newItem]);
};
const removeItem = (id) => {
setItems(items.filter(item => item.id !== id));
};
return (
<div className="App">
<button onClick={addItem}>Add Item</button>
<TransitionGroup className="list">
{items.map(item => (
<CSSTransition key={item.id} timeout={500} classNames="item">
<div className="list-item">
{item.text} <button onClick={() => removeItem(item.id)}>Remove</button>
</div>
</CSSTransition>
))}
</TransitionGroup>
</div>
);
}
export default App;
.list {
display: flex;
flex-direction: column;
}
.list-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
border: 1px solid #ccc;
margin-bottom: 5px;
}
.item-enter {
opacity: 0;
transform: scale(0.5);
}
.item-enter-active {
opacity: 1;
transform: scale(1);
transition: opacity 500ms, transform 500ms;
}
.item-exit {
opacity: 1;
transform: scale(1);
}
.item-exit-active {
opacity: 0;
transform: scale(0.5);
transition: opacity 500ms, transform 500ms;
}
通过以上示例和解释,你应该能够理解 TransitionGroup
的基本概念、优势、类型和应用场景,并能够在实际项目中应用它来实现平滑的过渡效果。
领取专属 10元无门槛券
手把手带您无忧上云