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

React過渡動畫的具體使用

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

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

一、核心組件說明

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:進入前
  • fade-enter-active:進入中
  • fade-enter-done:進入完成
  • 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;
}
/* 進入前:透明度0,縮小 */
.fade-enter { 
opacity: 0;
transform: scale(0.8);
} 
/* 進入中:過渡動畫 */ 
.fade-enter-active{
opacity: 1; 
transform: scale(1);
transition: all 300ms 
ease-in-out;
} 
/* 離開前:保持當前狀態(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; }

進階: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; }
/* 進入動畫:從下方滑入并淡入 */
.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í)行進入動畫
onEnter / onEntered / onExit / onExited過渡階段的鉤子函數(shù)

TransitionGroup 注意事項

  • 子項必須設(shè)置唯一的 key,否則動畫會出錯
  • 每個子項都要包裹 CSSTransition 才能觸發(fā)過渡
  • 可以通過 component 屬性指定包裹的標簽(默認是 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),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • react中的DOM操作實現(xiàn)

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

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

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

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

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

    本文主要介紹了在React中用canvas對圖片標注的實現(xiàn) ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    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ù)的方法詳解

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

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

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

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

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

    React useEffect的理解與使用

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

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

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

最新評論

南京市| 社会| 杂多县| 永川市| 大同市| 进贤县| 汨罗市| 祥云县| 玉屏| 正定县| 扎赉特旗| 独山县| 同心县| 尚义县| 怀来县| 健康| 赤城县| 博白县| 北流市| 中山市| 乐陵市| 永丰县| 库伦旗| 葵青区| 崇州市| 衡阳市| 霍山县| 大港区| 改则县| 双流县| 东城区| 富锦市| 徐水县| 东山县| 读书| 万宁市| 嵊州市| 乌什县| 万安县| 陆丰市| 鹿泉市|