React路由動畫切換實現過程詳解

1.下載

cnpm install react-transition-group –save

2.配置

在路由配置文件/src/App.js文件下中導入動畫組件

引入

import {TransitionGroup, CSSTransition} from 'react-transition-group'

在路由組件模板中,用動畫組件包裹路由組件

<TransitionGroup>
                <CSSTransition timeout={3000} classNames="dg" unmountOnExit key={props.location.pathname}>
                    <Switch location={props.location}>
                        <Route path="/" exact component={Login}/>
                        <Route path="/child1" exact component={Home}/>
                        <Route path="/child2" exact component={My}/>
                    </Switch>
                </CSSTransition>
</TransitionGroup>

使用動畫的寫法 CSSTransition 需要設置三個屬性:

  • in: 控制子元素顯示隱藏的條件,一般是bool值或表達式
  • timeout: 入場或出場動畫的時間,單位默認毫秒
  • className: 入場或出場class屬性名前綴

註意:CSSTransition組件的key屬性值要保證唯一性,所以用location.pathname

Switch組件要設置location屬性為路由信息的props.location,保證路由跳轉組件的key和CSSTransition的key一致

如果路由中沒有location.pathname,需要使用withRouter導入

import { withRouter } from 'react-router-dom'
export default withRouter(App);

3.引入css

在組件中寫出路由切換動畫的過程

/* 入場動畫過程 */
.dg-enter{
    transform: translateX(200px)
  }
  .dg-enter-active{
    transition: 2s;
    transform: translateX(0px)
  }
  .dg-enter-done{
    transform: translateX(0px)
  }
  /* 出場動畫過程 */
  .dg-exit{
    transform: translateX(0px)
  }
  .dg-exit-active{
    transition: 2s;
    transform: translateX(200px)
  }
  .dg-exit-done{
    transform: translateX(200px)
  }

引入css文件

import './app.css'

這樣一個簡單的React路由動畫切換就實現瞭

4.結合animate庫

我們可以自己定義classNames,然後使用css3設置動畫,也可以結合animate庫設置他的動畫效果

下載

npm install animate.css –save

引入

import 'animate.css';
//自定義的類名(定義動畫效果,進場前,進場後直到結束,結束前,結束後)
classNames={{
    enter: "animate__animated",
    enterActive: "animate__fadeIn",
    exit: "animate__animated",
    exitActive: "animate__fadeOut",
}}

具體的我們可以進行參考animate官網網址:Animate.css | A cross-browser library of CSS animations.

到此這篇關於React路由動畫切換實現過程詳解的文章就介紹到這瞭,更多相關React路由動畫切換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: