在React中为动态生成的表项添加淡出动画,可以使用CSS动画结合React的状态管理来实现。以下是实现这一功能的基础概念、步骤和相关代码示例。
useState
或useReducer
来控制元素的显示状态。/* 定义淡出动画 */
.fade-out {
animation: fadeOut 0.5s ease-out forwards;
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
import React, { useState } from 'react';
import './styles.css'; // 引入上面定义的CSS
function DynamicTable() {
const [items, setItems] = useState(['Item 1', 'Item 2', 'Item 3']);
const [fadeOutIndex, setFadeOutIndex] = useState(null);
const handleRemoveItem = (index) => {
setFadeOutIndex(index); // 设置要淡出的项的索引
setTimeout(() => {
setItems(prevItems => prevItems.filter((_, i) => i !== index)); // 实际移除项
setFadeOutIndex(null); // 重置淡出索引
}, 500); // 等待动画完成
};
return (
<table>
<tbody>
{items.map((item, index) => (
<tr key={index} className={fadeOutIndex === index ? 'fade-out' : ''}>
<td>{item}</td>
<td><button onClick={() => handleRemoveItem(index)}>Remove</button></td>
</tr>
))}
</tbody>
</table>
);
}
export default DynamicTable;
.fade-out
类定义了一个0.5秒的淡出效果。fadeOutIndex
用于跟踪当前应该淡出的表项索引。fadeOutIndex
为该项的索引,触发CSS动画。动画完成后,通过setTimeout
实际从列表中移除该项,并重置fadeOutIndex
。这种方法不仅适用于表项的删除动画,还可以扩展到其他需要动态添加或移除元素的场景,提供了一种灵活且易于维护的动画实现方式。
通过这种方式,可以在React应用中有效地添加和管理各种动画效果,提升应用的交互性和美观度。
领取专属 10元无门槛券
手把手带您无忧上云