1. 程式人生 > >react router Transition

react router Transition

使用react-create-app

App.js

import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link,Redirect,Switch } from "react-router-dom";

import { TransitionGroup, CSSTransition } from "react-transition-group";
import '../src/assets/sass/App.css';

const NavLink = (props) => {
  return(
    <li style={styles.navItem}>
      <Link {...props} style={{color: "inherit"}}/>
    </li>
  )
}

const HSL = ({match: {params}}) => {
  return(
    <div style={{
      ...styles.fill,
      ...styles.hsl,
      background: `hsl(${params.h}, ${params.s}%, ${params.l}%)`
    }}>
    hsl({params.h}, {params.s}%, {params.l}%)
    </div>
  )
}
const RGB = ({match: {params}}) => {
  return (
    <div style={{
      ...styles.fill,
      ...styles.rgb,
      background: `rgb(${params.r}, ${params.g}, ${params.b})`
    }}>
      rgb({params.r},{params.g},{params.b})
    </div>
  )
}

class App extends Component {
  render() {
    return (
        <Router>
          <Route render={({location}) => (
            <div style={{...styles.fill}}>
              <div style={{
                padding: '20px',
                color: '#f00',
              }}>https://reactcommunity.org/react-transition-group/</div>
              
              <Route exact path='/' render={() => <Redirect to="/hsl/10/90/50" />}/> 
              <ul style={styles.nav}>
                <NavLink to="/hsl/10/90/50">Red</NavLink>
                <NavLink to="/hsl/120/100/40">Green</NavLink>
                <NavLink to="/rgb/33/150/243">Blue</NavLink>
                <NavLink to="/rgb/240/98/146">Pink</NavLink>
              </ul>

              <div style={styles.content}>
                <TransitionGroup>
                  <CSSTransition key={location.key} 
                                classNames="fade" 
                                timeout={1000} 
                                onEnter={()=>console.log('onEnter')}>
                    <Switch location={location}>
                      <Route exact path="/hsl/:h/:s/:l" component={HSL}/>
                      <Route exact path="/rgb/:r/:g/:b" component={RGB} />
                      <Route render={() => <div>Not Found</div>} />
                    </Switch>
                  </CSSTransition>
                </TransitionGroup>
              </div>
              
            </div>  
          )}/>
        </Router>
    );
  }
}

const styles = {};

styles.fill = {
  position: "absolute",
  left: 0,
  right: 0,
  top: 0,
  bottom: 0
};

styles.content = {
  ...styles.fill,
  top: "40px",
  textAlign: "center",
  width: '100%',
  overflowX: 'hidden',
};

styles.nav = {
  padding: 0,
  margin: 0,
  position: "absolute",
  top: 0,
  height: "40px",
  width: "100%",
  display: "flex"
};

styles.navItem = {
  textAlign: "center",
  flex: 1,
  listStyleType: "none",
  padding: "10px"
};

styles.hsl = {
  ...styles.fill,
  color: "white",
  paddingTop: "20px",
  fontSize: "30px"
};

styles.rgb = {
  ...styles.fill,
  color: "white",
  paddingTop: "20px",
  fontSize: "30px"
};


export default App;

App.css

.fade-enter {
    transform: translateX(-100%);
    z-index: 1;
}

.fade-enter.fade-enter-active {
    transform: translateX(0);
    transition: all 1s ease;
}

.fade-exit{
    transform: translateX(0);
}
.fade-exit.fade-exit-active{
    transform: translateX(100%);
    transition: all 1s ease;
}

效果

參考:

相關推薦

react router Transition

使用react-create-app App.js import React, { Component } from 'react'; import { BrowserRouter as Router, Route, Link,Redirect,Switch } from

React+React Router+React-Transition-Group實現頁面左右滑動+滾動位置記憶

在React Router中,想要做基於路由的左右滑動,我們首先得搞清楚當發生路由跳轉的時候到底發生了什麼,和路由動畫的原理。   首先我們要先了解一個概念:history。history原本是內置於瀏覽器內的一個物件,包含了一些關於歷史記錄的一些資訊,但本文要說的history是React-R

React-Router 4 的新玩意兒

nbsp 上一個 默認 end browser lan pre cat 發布 上一個項目用的還是 2.6.1,轉眼的功夫 4.0 都發布了,API 變化實在有點大,2.X那套東西不頂用了,老老實實重新看一遍文檔,其中有幾點需要註意的,拿出來說一說。 本文只討論針對瀏覽器的

react-routerreact-redux跳轉後保存store數據(基於"react-router": "^2.8.0")

spa imp pan item 介紹 評論 tdi else mount 1.router引入 import { Route, IndexRoute, Router, hashHistory, browserHistory } from ‘react-router‘;

react-router打包後無法通過路由進入到頁面

裏的 col ces con def gin cnblogs style 數據 react-router打包後無法通過路由進入到頁面,是因為當我們使用react-router-dom裏的BrowserRouter as Router時,是用瀏覽器history對象的方法去請

react-router 參數獲取

list nds classname clas param 點擊 urn show lin No BB!!! show me the code。 Main.js import { BrowserRouter, Route, Link ,Switch} from

[Preact] Integrate react-router with Preact

ram pro chan type rop ear ret mpat console React-router is the community favourite routing solution - it can handle all of your complex r

react-router v4 學習實踐

key 網上 .com 主域 left 登錄 返回 定向 .cn 最近學習了 react-router v4,根據官方 API 文檔和網上資源做了一個簡單的路由示例。 先用官方的工具 create-react-app 初始化一個 react 項目模板,再根

React Router 使用教程

onos undefine ria www -m line ont col var 由於不清楚App組件的this.props.children屬性就是子組件,所以在url設置路徑訪問時希望的組件一直不能顯示。 參考:http://www.ruanyifeng.com/bl

react-router搭配react-redux無法監聽路由變化的問題

不必要 默認 cti 傳遞 通過 nbsp fun urn style 在react中,要將react組件連接到redux中,通常會這樣包裝組件 class Home extends Component { } function select(state)

vue-router transition 路由切換效果

link form turn data bic auto router mar all 所需更改文件 App.vue template結構: <template> <div id="app"> <div id="nav">

react-router

ops 默認 首頁 ide class logs inbox tin uid 路由配置 我們來通過一個簡單的例子解釋一下如何編寫路由配置。 React.render(( <Router> <Route path="/" component={

【前端】react學習階段總結,學習reactreact-router與redux的這些事兒

行程 clas 目前 webpack body src 控制 return 體驗 前言   借用阮一峰的一句話:真正學會 React 是一個漫長的過程。 這句話在我接觸react深入以後,更有感觸了。整個react體系都是全新的,最初做簡單的應用,僅僅使用react-to

通過一個用戶管理實例學習react-router-dom知識

函數 parse spa 用戶管理 匹配 對象 有一個 dom nds 我們通過一個用戶管理實例來學習react-router-dom 這個實例包括9個小組件 App.js 引入組件 Home.js 首頁組件 User.js 用戶管理組件 - UserLis

React Router 4.0中文快速入門

arch ring ooo 組件 arc ret 自動 import export 1 import React from ‘react‘ 2 import { 3 BrowserRouter as Router, 4 Route, 5

React+routerreact+redux使用過程的記錄

app.js 描述 集成 關系 route false 操作 之間 ade 1、集成react+redux的場景。 在不同的路由頁面下,控制公共的頭部顯示和隱藏等功能。因為路由和Header之間不是直接的父組件和子組件的關系,所以通過pros傳參滿足不了。這個時候引入red

[轉] React Router 使用教程

num 方維 inpu export 定向 分離 his mar java 你會發現,它不是一個庫,也不是一個框架,而是一個龐大的體系。想要發揮它的威力,整個技術棧都要配合它改造。你要學習一整套解決方案,從後端到前端,都是全新的做法。 舉例來說,React 不使用 H

react-router 4.0 學習筆記

com alt image div ima cnblogs link 圖片 imp 1、安裝react-router-dom 2、頁面上要使用的時候要引入  import { BrowserRouter as Router, Route, Link } fr

初步學習React Router 4.0

logs root erro gist 技術分享 發布 run row div React Router 4.0 (以下簡稱 RR4) 已經正式發布,它遵循React的設計理念,即萬物皆組件。 初始化項目啟動之後: 查看相關的配置:npm run eject 查看下p

Redux+React Router+Node.js全棧開發

流數據 inux sql數據庫 安全 體系 dea 基礎 tomcat集群 color 詳情請交流 QQ 709639943 01、Java深入微服務原理改造房產銷售平臺 02、跨平臺混編框架 MUI 仿豆瓣電影 APP 03、Node.js入門到企業Web開發中