最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React過渡動畫的具體使用

 更新時間:2026年06月25日 10:57:17   作者:kyrie28  
react-transition-group 是 React 官方維護(hù)的過渡動畫庫,專門用來給組件的掛載 / 卸載、顯示 / 隱藏添加過渡效果,本文就來詳細(xì)的介紹一下React過渡動畫的使用,感興趣的可以了解一下

react-transition-group react-transition-group 是 React 官方維護(hù)的過渡動畫庫,專門用來給組件的掛載 / 卸載、顯示 / 隱藏添加過渡效果。

一、核心組件說明

react-transition-group 提供了 4 個核心組件,最常用的是 CSSTransition 和 TransitionGroup:

安裝

npm install react-transition-group
組件用途
Transition基礎(chǔ)組件,用 JS 控制過渡狀態(tài)
CSSTransition基于 CSS 類名的過渡(最常用)
TransitionGroup管理一組元素的過渡,配合 CSSTransition 實現(xiàn)列表動畫
SwitchTransition控制兩個組件切換時的過渡

最常用:CSSTransition 示例(單元素過渡)

實現(xiàn)一個簡單的淡入淡出效果:

1. 組件代碼

import { useState } from 'react'; 
import { CSSTransition } from 'react-transition-group';
import './fade.css'; 
function FadeDemo() {
const [show, setShow] = useState(false); 
return ( 
<div>
<button onClick={() => setShow(!show)}> 
{show ? '隱藏' : '顯示'}
</button> 
{/* in: 控制是否顯示 timeout: 過渡持續(xù)時間(毫秒) classNames: 對應(yīng) CSS 類名前綴 unmountOnExit: 隱藏時卸載組件 */}
<CSSTransition
in={show}
timeout={300} 
classNames="fade"
unmountOnExit >
<div className="box">我是淡入淡出的盒子</div> 
</CSSTransition>
</div>
); }
export default FadeDemo;

2. 配套 CSS(fade.css)

CSSTransition 會自動給元素添加這些類名:

  • fade-enter:進(jìn)入前
  • fade-enter-active:進(jìn)入中
  • fade-enter-done:進(jìn)入完成
  • fade-exit:離開前
  • fade-exit-active:離開中
  • fade-exit-done:離開完成
/* fade.css */
.box { 
width: 200px;
height: 200px;
background: #409eff;
color: white;
display: flex; 
align-items: center; 
justify-content: center; margin-top: 20px;
}
/* 進(jìn)入前:透明度0,縮小 */
.fade-enter { 
opacity: 0;
transform: scale(0.8);
} 
/* 進(jìn)入中:過渡動畫 */ 
.fade-enter-active{
opacity: 1; 
transform: scale(1);
transition: all 300ms 
ease-in-out;
} 
/* 離開前:保持當(dāng)前狀態(tài) */
.fade-exit {
opacity: 1;
transform: scale(1);
} 
/* 離開中:過渡到隱藏狀態(tài) */ 
.fade-exit-active {
opacity: 0;
transform: scale(0.8); 
transition: all 300ms ease-in-out; }

進(jìn)階:TransitionGroup 實現(xiàn)列表動畫

實現(xiàn)一個列表添加 / 刪除時的動畫效果:

1. 組件代碼

import { useState } from 'react';
import { CSSTransition, TransitionGroup } from 'react-transition-group';
import './list.css'; 
function ListDemo() { 
const [items, setItems] = useState([
{ id: 1, text: '列表項1' },
{ id: 2, text: '列表項2' }, 
{ id: 3, text: '列表項3' } 
]); 
const addItem = () => { 
const newId = Math.max(...items.map(i => i.id)) + 1;
setItems([...items, { id: newId, text: `列表項${newId}` }]); }; 
const removeItem = (id) => { 
setItems(items.filter(item => item.id !== id)); 
};
return ( 
<div> 
<button onClick={addItem}>添加列表項</button> 
{/* TransitionGroup 包裹整個列表,管理所有子項的過渡 */}
<TransitionGroup className="list">
{items.map(item => ( 
<CSSTransition key={item.id} 
timeout={300} 
classNames="list-item"
>
<div className="list-item">
{item.text}
<button onClick={() => removeItem(item.id)}>刪除</button> </div> </CSSTransition> ))} </TransitionGroup> 
</div> ); } 
export default ListDemo;

  1. 配套 CSS(list.css)
/* list.css */ 
.list { margin-top: 20px; } 
.list-item { display: flex; justify-content: space-between; align-items: center; padding: 10px; background: #f0f0f0; margin-bottom: 8px; border-radius: 4px; }
/* 進(jìn)入動畫:從下方滑入并淡入 */
.list-item-enter { opacity: 0; transform: translateY(20px); } 
.list-item-enter-active { opacity: 1; transform: translateY(0); transition: all 300ms ease-out; } 
/* 離開動畫:向上滑出并淡出 */ 
.list-item-exit { opacity: 1; transform: translateY(0); } 
.list-item-exit-active { opacity: 0; transform: translateY(-20px); transition: all 300ms ease-in; 
}

常用屬性說明

CSSTransition 常用屬性

屬性作用
in控制組件是否顯示(true/false)
timeout過渡持續(xù)時間(毫秒),和 CSS 動畫時長保持一致
classNamesCSS 類名前綴,比如 classNames="fade" 會生成 fade-enter 等類名
unmountOnExit動畫結(jié)束后卸載組件(隱藏時不占空間)
appear組件首次掛載時也執(zhí)行進(jìn)入動畫
onEnter / onEntered / onExit / onExited過渡階段的鉤子函數(shù)

TransitionGroup 注意事項

  • 子項必須設(shè)置唯一的 key,否則動畫會出錯
  • 每個子項都要包裹 CSSTransition 才能觸發(fā)過渡
  • 可以通過 component 屬性指定包裹的標(biāo)簽(默認(rèn)是 div)

到此這篇關(guān)于React過渡動畫的具體使用的文章就介紹到這了,更多相關(guān)React過渡動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react循環(huán)數(shù)據(jù)(列表)的實現(xiàn)

    react循環(huán)數(shù)據(jù)(列表)的實現(xiàn)

    這篇文章主要介紹了react循環(huán)數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • react中的DOM操作實現(xiàn)

    react中的DOM操作實現(xiàn)

    某些情況下需要在典型數(shù)據(jù)流外強制修改子代。要修改的子代可以是 React 組件實例,也可以是 DOM 元素。這時就要用到refs來操作DOM,本文詳細(xì)的介紹一下使用,感興趣的可以了解一下
    2021-06-06
  • React開發(fā)進(jìn)階redux saga使用原理詳解

    React開發(fā)進(jìn)階redux saga使用原理詳解

    這篇文章主要為大家介紹了React開發(fā)進(jìn)階redux saga使用原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 在React中用canvas對圖片標(biāo)注的實現(xiàn)

    在React中用canvas對圖片標(biāo)注的實現(xiàn)

    本文主要介紹了在React中用canvas對圖片標(biāo)注的實現(xiàn) ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • React更新組件狀態(tài)的常用方法

    React更新組件狀態(tài)的常用方法

    React是一個用于構(gòu)建用戶界面的JavaScript庫,廣泛應(yīng)用于開發(fā)現(xiàn)代單頁應(yīng)用(SPA),在 React 中,狀態(tài)管理是一個關(guān)鍵概念,因為它直接影響到組件的渲染和用戶體驗,本文將深入探討 React 中如何更新組件狀態(tài),需要的朋友可以參考下
    2025-06-06
  • 使用Axios在React中請求數(shù)據(jù)的方法詳解

    使用Axios在React中請求數(shù)據(jù)的方法詳解

    這篇文章主要給大家介紹了初學(xué)React,如何規(guī)范的在react中請求數(shù)據(jù),主要介紹了使用axios進(jìn)行簡單的數(shù)據(jù)獲取,加入狀態(tài)變量,優(yōu)化交互體驗,自定義hook進(jìn)行數(shù)據(jù)獲取和使用useReducer改造請求,本文主要適合于剛接觸React的初學(xué)者以及不知道如何規(guī)范的在React中獲取數(shù)據(jù)的人
    2023-09-09
  • ReactNative錯誤采集原理在Android中實現(xiàn)詳解

    ReactNative錯誤采集原理在Android中實現(xiàn)詳解

    這篇文章主要為大家介紹了ReactNative錯誤采集原理在Android中實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • React組件中使用JSON數(shù)據(jù)文件的方法詳解

    React組件中使用JSON數(shù)據(jù)文件的方法詳解

    要在 React 組件中使用 JSON 數(shù)據(jù),有多種方法,這篇文章主要為大家詳細(xì)介紹了五個常見的方法,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下
    2024-01-01
  • React useEffect的理解與使用

    React useEffect的理解與使用

    這篇文章主要介紹了React useEffect的理解與使用,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04
  • React Fiber構(gòu)建beginWork源碼解析

    React Fiber構(gòu)建beginWork源碼解析

    這篇文章主要為大家介紹了React Fiber構(gòu)建beginWork源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評論

安阳县| 沁源县| 亚东县| 阳东县| 中江县| 凤翔县| 崇信县| 阿拉善盟| 威海市| 方山县| 长春市| 清丰县| 延安市| 凤城市| 阿合奇县| 盐津县| 吐鲁番市| 岐山县| 岳普湖县| 宽城| 安丘市| 绩溪县| 环江| 珲春市| 水富县| 新邵县| 杨浦区| 得荣县| 上虞市| 嘉兴市| 长垣县| 龙江县| 来安县| 四子王旗| 葵青区| 许昌县| 兰州市| 上杭县| 昭苏县| 淳安县| 商都县|