国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

react-router 路由切換動畫的實(shí)現(xiàn)示例

2024-05-06 15:27:36
字體:
供稿:網(wǎng)友

路由切換動畫

因?yàn)轫?xiàng)目的需求,需要在路由切換的時候,加入一些比較 zb 的視覺效果,所以研究了一下。把這些學(xué)習(xí)的過程記錄下來,以便以后回顧。同時也希望這些內(nèi)容能夠幫助一些跟我一樣的菜鳥,讓他們少走些坑??赡芪覍Υa的表述不是很到位,希望大家不要介意。機(jī)智的你們一定可以看明白。

參考內(nèi)容:

react 路由動畫 react-router Switch 組件 react 動畫插件

1.插件依賴

使用的插件是react-transition-group。先簡單介紹一下動畫插件的使用方式。

CSSTransition這個組件有兩個比較主要的屬性:key和in。

in:Boolean屬性其實(shí)可以理解為是否顯示當(dāng)前內(nèi)容節(jié)點(diǎn)。true則顯示,false則不顯示。

key:String這個屬性是配合TransitionGroup組件來使用的。在一般的列表組件中(列如 todolist),可以通過key來判斷列表中的子節(jié)點(diǎn)需要被插入還是移除,然后觸發(fā)動畫。

2. Switch 組件

這個組件有一個很重要的屬性:location。同時這個屬性也是路由切換動畫的關(guān)鍵所在。Switch組件的子組件(一般是 Route 和 Redirect)會根據(jù)當(dāng)前瀏覽器的location作為匹配依據(jù)來進(jìn)行路由匹配。但是如果Switch組件定義了location屬性,其中的子組件就會以定義的location作為匹配依據(jù)。

3.代碼部分

import React, { Component } from 'react'import { TransitionGroup, CSSTransition } from 'react-transition-group'import { Switch, Route, withRouter } from 'react-router-dom'@withRouterclass Routes extends Component {  render() {    const location = this.props.location    return (      <TransitionGroup>        <CSSTransition key={location.key} timeout={1000} classNames="fade">          <Switch location={location}>            <Route path="/route-1" component={Route1} />            <Route path="/route-2" component={Route2} />          </Switch>        </CSSTransition>      </TransitionGroup>    )  }}export default Routes

4.原理分析

先確定需求:當(dāng)切換路由的時候,舊的路由內(nèi)容在一定時間內(nèi)過渡消失,新的路由內(nèi)容過渡顯示。

在這個需要里面有兩個重要的部分:

過渡期間,會同時存在兩個節(jié)點(diǎn):新節(jié)點(diǎn)和舊節(jié)點(diǎn) 舊節(jié)點(diǎn)應(yīng)該顯示舊的路由內(nèi)容,新的節(jié)點(diǎn)應(yīng)該顯示新的路由內(nèi)容

4.1 同時存在兩節(jié)點(diǎn)

剛剛提到的CSSTransitionkey屬性可以決定該節(jié)點(diǎn)是否需要顯示。

Router中的location屬性會在路由發(fā)生變化的時候,進(jìn)行更新,而

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 钟山县| 泗阳县| 布尔津县| 监利县| 尤溪县| 平南县| 临澧县| 施甸县| 巨野县| 宁陕县| 九龙城区| 抚远县| 中江县| 汉中市| 宝应县| 泸水县| 西畴县| 定日县| 原阳县| 溧水县| 蓝田县| 阿勒泰市| 鄢陵县| 板桥市| 贵州省| 富裕县| 湘阴县| 乌鲁木齐市| 乐东| 满城县| 许昌市| 明光市| 怀宁县| 和田市| 嘉义市| 乐安县| 栾城县| 奇台县| 乌什县| 海伦市| 阜宁县|