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

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

 更新時間:2018年12月03日 09:40:06   作者:darcrand  
這篇文章主要介紹了react-router 路由切換動畫的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

路由切換動畫

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

參考內容:

1.插件依賴

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

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

in:Boolean屬性其實可以理解為是否顯示當前內容節(jié)點。true則顯示,false則不顯示。

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

2. Switch 組件

這個組件有一個很重要的屬性:location。同時這個屬性也是路由切換動畫的關鍵所在。Switch組件的子組件(一般是 Route 和 Redirect)會根據(jù)當前瀏覽器的location作為匹配依據(jù)來進行路由匹配。但是如果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'

@withRouter
class 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.原理分析

先確定需求:當切換路由的時候,舊的路由內容在一定時間內過渡消失,新的路由內容過渡顯示。

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

  • 過渡期間,會同時存在兩個節(jié)點:新節(jié)點和舊節(jié)點
  • 舊節(jié)點應該顯示舊的路由內容,新的節(jié)點應該顯示新的路由內容

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

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

Router中的location屬性會在路由發(fā)生變化的時候,進行更新,而location里面的key則可以作為CSSTransitionkey。

關于 history 對象,可以理解為一個數(shù)組,當頁面的 location 發(fā)生變化時,或者刷新頁面,history 就會push一個新的歷史信息。在這個歷史信息里面,有一個key屬性,用來區(qū)分不同的歷史記錄(跳轉新頁面或者是刷新頁面)

當路由切換的時候,location對象就會改變,新的key會使得頁面重新渲染時出現(xiàn)兩個CSSTransition(新舊節(jié)點)。

4.2 新舊節(jié)點對應新舊路由內容

如果只是配置key屬性,會發(fā)現(xiàn)舊的節(jié)點會去匹配新的路由內容。這是因為Route組件默認根據(jù)當前location進行匹配。為了讓舊節(jié)點中的Route根據(jù)舊的location進行匹配,就需要設置Switchlocation屬性。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • ahooks封裝cookie?localStorage?sessionStorage方法

    ahooks封裝cookie?localStorage?sessionStorage方法

    這篇文章主要為大家介紹了ahooks封裝cookie?localStorage?sessionStorage的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • react源碼中的生命周期和事件系統(tǒng)實例解析

    react源碼中的生命周期和事件系統(tǒng)實例解析

    這篇文章主要為大家介紹了react源碼中的生命周期和事件系統(tǒng)實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 一文帶你深入理解React中的Context

    一文帶你深入理解React中的Context

    React?Context是React提供給開發(fā)者的一種常用的狀態(tài)管理機制,本文主要來和大家講講為什么需要Context,又是如何使用Context的,感興趣的可以了解一下
    2023-05-05
  • React報錯map()?is?not?a?function詳析

    React報錯map()?is?not?a?function詳析

    這篇文章主要介紹了React報錯map()?is?not?a?function詳析,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • React state狀態(tài)屬性用法講解

    React state狀態(tài)屬性用法講解

    React將組件(component)看成一個狀態(tài)機(State Machines),通過其內部自定義的狀態(tài)(State)和生命周期(Lifecycle)實現(xiàn)并與用戶交互,維持組件的不同狀態(tài)
    2022-11-11
  • 使用reactjs優(yōu)化了進度條頁面性能提高70%

    使用reactjs優(yōu)化了進度條頁面性能提高70%

    這篇文章主要介紹了使用reactjs優(yōu)化了進度條后頁面性能提高了70%的操作技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • 在react中使用vuex的示例代碼

    在react中使用vuex的示例代碼

    這篇文章主要介紹了在react中使用vuex的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 使用react-native-image-viewer實現(xiàn)大圖預覽

    使用react-native-image-viewer實現(xiàn)大圖預覽

    這篇文章主要介紹了使用react-native-image-viewer實現(xiàn)大圖預覽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • react以create-react-app為基礎創(chuàng)建項目

    react以create-react-app為基礎創(chuàng)建項目

    這篇文章主要介紹了react以create-react-app為基礎創(chuàng)建項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • React三大屬性之props的使用詳解

    React三大屬性之props的使用詳解

    這篇文章主要介紹了React三大屬性之props的使用詳解,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下
    2021-04-04

最新評論

永嘉县| 老河口市| 昔阳县| 延庆县| 乐陵市| 平阳县| 浑源县| 双峰县| 宜宾县| 博客| 额尔古纳市| 彭阳县| 延庆县| 镇坪县| 肇源县| 太和县| 长葛市| 始兴县| 济源市| 珠海市| 旬阳县| 公安县| 两当县| 莱芜市| 古交市| 达孜县| 弋阳县| 教育| 城口县| 绍兴市| 商城县| 建瓯市| 墨竹工卡县| 清流县| 清水县| 久治县| 白山市| 宝兴县| 奈曼旗| 封开县| 邵阳市|