亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

路由切換動(dòng)畫

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

參考內(nèi)容:

1.插件依賴

使用的插件是react-transition-group。先簡(jiǎn)單介紹一下動(dòng)畫插件的使用方式。

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

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

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

2. Switch 組件

這個(gè)組件有一個(gè)很重要的屬性:location。同時(shí)這個(gè)屬性也是路由切換動(dòng)畫的關(guān)鍵所在。Switch組件的子組件(一般是 Route 和 Redirect)會(huì)根據(jù)當(dāng)前瀏覽器的location作為匹配依據(jù)來(lái)進(jìn)行路由匹配。但是如果Switch組件定義了location屬性,其中的子組件就會(huì)以定義的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.原理分析

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

在這個(gè)需要里面有兩個(gè)重要的部分:

  • 過(guò)渡期間,會(huì)同時(shí)存在兩個(gè)節(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 同時(shí)存在兩節(jié)點(diǎn)

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

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

關(guān)于 history 對(duì)象,可以理解為一個(gè)數(shù)組,當(dāng)頁(yè)面的 location 發(fā)生變化時(shí),或者刷新頁(yè)面,history 就會(huì)push一個(gè)新的歷史信息。在這個(gè)歷史信息里面,有一個(gè)key屬性,用來(lái)區(qū)分不同的歷史記錄(跳轉(zhuǎn)新頁(yè)面或者是刷新頁(yè)面)

當(dāng)路由切換的時(shí)候,location對(duì)象就會(huì)改變,新的key會(huì)使得頁(yè)面重新渲染時(shí)出現(xiàn)兩個(gè)CSSTransition(新舊節(jié)點(diǎn))。

4.2 新舊節(jié)點(diǎn)對(duì)應(yīng)新舊路由內(nèi)容

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • react腳手架配置代理的實(shí)現(xiàn)

    react腳手架配置代理的實(shí)現(xiàn)

    本文主要介紹了react腳手架配置代理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • React虛擬列表的實(shí)現(xiàn)代碼

    React虛擬列表的實(shí)現(xiàn)代碼

    最近看了vueuse的useVirtualList的實(shí)現(xiàn)方式,發(fā)現(xiàn)虛擬滾動(dòng)效果不錯(cuò),就嘗試著同樣的寫法改成react版本,虛擬列表主要包含三部分組成,offset,viewcapacity,overscan,本文就給大家介紹一下React虛擬列表的實(shí)現(xiàn),需要的朋友可以參考下
    2023-08-08
  • 如何在react項(xiàng)目中做公共配置文件

    如何在react項(xiàng)目中做公共配置文件

    這篇文章主要介紹了如何在react項(xiàng)目中做公共配置文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • React Mobx狀態(tài)管理工具的使用

    React Mobx狀態(tài)管理工具的使用

    這篇文章主要介紹了React Mobx狀態(tài)管理工具的使用,MobX是一個(gè)狀態(tài)管理庫(kù),它會(huì)自動(dòng)收集并追蹤依賴,開(kāi)發(fā)人員不需要手動(dòng)訂閱狀態(tài),當(dāng)狀態(tài)變化之后MobX能夠精準(zhǔn)更新受影響的內(nèi)容,另外它不要求state是可JSON序列化的,也不要求state是immutable
    2023-02-02
  • 一文搞懂?React?18?中的?useTransition()?與?useDeferredValue()

    一文搞懂?React?18?中的?useTransition()?與?useDeferredValue()

    這篇文章主要介紹了一文搞懂?React?18?中的?useTransition()與useDeferredValue(),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • react如何將字符串轉(zhuǎn)義成html語(yǔ)句

    react如何將字符串轉(zhuǎn)義成html語(yǔ)句

    這篇文章主要介紹了react如何將字符串轉(zhuǎn)義成html語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React如何立即更新DOM

    React如何立即更新DOM

    這篇文章主要介紹了React如何立即更新DOM問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Unity?RectTransform詳解

    Unity?RectTransform詳解

    unity中的ui元素是有嚴(yán)格的父子關(guān)系的,子物體的位置是根據(jù)父物體的變化而變化的,而子物體和父物體聯(lián)系的橋梁就是Anchor,本文重點(diǎn)介紹Unity?RectTransform的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2024-01-01
  • react native 文字輪播的實(shí)現(xiàn)示例

    react native 文字輪播的實(shí)現(xiàn)示例

    這篇文章主要介紹了react native 文字輪播的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • react實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽(tīng)方式

    react實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽(tīng)方式

    這篇文章主要介紹了react實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽(tīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論