1. 程式人生 > >react學習總結3--React-Router

react學習總結3--React-Router

react 學習總結–React-Router

說明

react-route 版本 : “^3.0.0”

react-router-redux 版本 ; “^4.0.7”

簡介

react 本身沒有路由功能,必須藉助第三方的庫,React-Router 是官方推薦的路由庫,通過URL的管理,實現元件的切換和狀態的變化,可以用來開發SPA(單頁應用)

react-router 以 react component 的元件方式提供 API,主要API如下

  • Router //容器
  • Route //路由
  • IndexRoute //指定預設情況下的子元件
  • Link //連結
  • IndexLink //連結到跟路由
  • Redirect //重定向
  • IndexRedirect //跟路由的重定向

1.Router

Router 元件本身只是一個容器,真正的路由要有Route元件定義
<Router history={browhistory} routes={routes} />

Router元件有一個引數history表示切換路由的方法,常用的history有一下三種

  • browserHistory
  • hashHistory
  • createMemoryHistory
browserHistory

browserhistory 是使用 React Router 的應用推薦的 history。它使用瀏覽器中的 History API 用於處理 URL ,路有效果:/home/ceshi/fir

注意:使用 browserHistory ,需要伺服器進行配置

hashHistory

hashHistory 使用 URL 中的 hash(#)部分去建立形如 example.com/#/some/path 的路由。

hashHistory 不需要伺服器任何配置就可以執行

2.Route

Route元件定義了URL路徑與元件的對應關係,可以同時使用多個Route
, Route元件還可以巢狀父路由寫this.props.children 加入子路由
,子路由也可以不寫在Router中,而是通過傳入routes屬性

let routes = <Route
path="/" component={App}>
</Route> <Router routes={routes} history={browserHistory} />
path 屬性

Route元件的path屬性,指定路由的匹配規則,可以省略,這樣不管路徑是否匹配,總是會載入指定元件

path屬性可以使用相對路徑(不以/開頭,相對於父元件的路徑)或者絕對路徑(/),
path 路徑可以傳遞引數(path=”/about/:id”)可以通過this.props.location.query來查詢

路徑語法

  • <Route path="/hello/:name"> 表示匹配hello下任意部分
  • <Route path="/hello(/:name)">()表示可選部分
  • *表示 匹配任意字元
  • **表示 匹配多個資料夾

3.IndexRoute

指定預設情況下載入的子元件

    <Route path="/" component={App}>
        <IndexRoute component={Test}/>
        <Route path="home" component={Home}/>
        <Route path="detail" component={Dates}/>
        <Route path="test/**" component={Test}>
            <IndexRoute component={Child} />
            <Route path="child" component={Child}/>
        </Route>
    </Route>

Link元件用於取代<a>元素,生成一個連結,允許使用者點選後跳轉到另一個路由。
Link 可以設定屬性

  • className : 設定靜態顯示類
  • style : 設定靜態顯示樣式
  • activeClassName : 新增訪問後類
  • activeStyle : 設定訪問後樣式

如果想要連結到根路由,不要使用Link 要使用 IndexLink

<IndexLink to="/">Home</IndexLink>

6.Redirect

用於路由跳轉,即為訪問一個路由會跳轉到另外一個路由經,可以在外邊定義路由元件,在想要訪問的位置設定子元件跳轉

    <Route path="test" component={Test}>
      {/* 從 /test/a 跳轉到 /a */}
      <Redirect from="a" to="/a" />
    </Route>

7.IndexRedirect

IndexRedirect 元件用於訪問根路由的時候,將使用者重定向到某個子元件

    <Route path="/" component={App}>
        <IndexRedirect to="/test"/>
        <Route path="test" component={Test} />
    </Router>

8.常用方法

獲取URL資訊

路由系統中直接連線的元件都會有location屬性,通過this.props.location可以獲取URL資訊

通過引入 browserHistory 也可以訪問當前location ,即使不是與路由系統直接連線的元件也可以訪問,並且還可以實現路由跳轉

    import {browserHistory} from 'react-router';
    console.log(browserHistory.getCurrentLocation());//獲取當前URL資訊
    browserHistory.goBack(); //調到上一個頁面
    let path = `/home`;
    browserHistory.push(path); //跳轉到path頁面

如果使用了react-router-redux 外掛,還可以進一步提升可操作性

    import {syncHistoryWithStore} from 'react-router-redux';
    // 利用react-router-redux提供的syncHistoryWithStore我們可以結合redux 的 store同步導航事件
    const browhistory = syncHistoryWithStore(browserHistory, store);
    <Router history={browhistory} routes={routes} />

    //在 reducer 配置中引入 routing
    import {routerReducer} from 'react-router-redux';
    const reducer = combineReducers({ routing: routerReducer});

    //使用時,獲取 store 的 state.routing.locationBeforeTransitions
    //即為 元件更新前獲取的下一個路由改變

使用context,實現路由跳轉

    class Child extends Component{
      constructor(props,context){
        super(props,context);
        this.handleClick = this.handleClick.bind(this);
      }
      handleClick(){
        console.log(this.context.router);
      }
      render() {
        return (
          <button onClick={this.handleClick}>點選</button>
        );
      }
    }
    Child.contextTypes = {
      router : React.PropTypes.object
    }

下一篇–Redux傳送門

  • Redux API
  • React-Redux API

相關推薦

react學習總結3--React-Router

react 學習總結–React-Router 說明 react-route 版本 : “^3.0.0” react-router-redux 版本 ; “^4.0.7”

React學習3)——Router路由的使用和頁面跳轉

React-Router的中文文件可以參照如下連結:         http://react-guide.github.io/react-router-cn/docs/Introduction.html  &nbs

React學習總結(二)

JSX學習總結 一、   什麼是JSX:一個比較高階、直觀的語法糖;一種類似於XML的語法。 (語法糖:是指在計算機語言中新增的某種語法,對語言功能沒有什麼影響,其作用是為了增加程式碼的可讀性減少程式碼的出錯)    React的核心機制之一就是建立虛擬DOM:通過JavaScript在記憶體中建立虛擬DOM

React學習總結(一)

React學習總結 一、什麼是React?   是Facebook公司開發的一套JS庫 二、老版本React      React:元件用的   ReactDom:把虛擬DOM渲染成真實DOM(DOM:計算資料變化觸發一個事件) 三、Reatct和vue之間的聯絡:   在Vue2.0版本沒有出來之前兩者

react學習總結2--基礎(二)

react 學習總結–基礎(二) 說明 React 版本 :”15.4.1” react-tap-event-plugin 版本: “^2.0.1” 1.資料流 在 React 中,資料流的流向是單向的–從父節點傳遞到子節

react學習總結

一、安裝 React的安裝包可以到官網下載,如果使用git也可在在git下載: git install react -g; 下載完畢可以寫個小例子: 首先,在index.html頁面 插入2個外部檔案: <script src="node_modules/react/

react學習總結1--基礎(一)

react 學習總結–基礎(一) 說明 React 版本 :”15.4.1” react-tap-event-plugin 版本: “^2.0.1” 1.react 是什麼 React 是 Facebook 內部的一個Ja

ReactJS學習系列課程(React學習總結

進來學習React, 下面來總結一下,主要有以下幾點: ReactJs是基於元件化的開發,所以最終你的頁面應該是由若干個小元件組成的大元件。 可以通過屬性,將值傳遞到元件內部,同理也可以通過屬性

react學習】關於react框架使用的一些細節要點的思考

through 私有變量 col 層級 -1 turn ech react 子函數 ( _(:3 」∠)_給園友們提個建議,無論是API文檔還是書籍,一定要多看幾遍!特別是隔一段時間後,會有意想不到的收獲的) 這篇文章主要是寫關於學習react中的一些自己的思考: 1.se

python 學習總結3

今天 pre 小程序 brush mas 返回 等待 add 學習總結 今天學習了socket的一些知識,主要為socket模塊中socket()類及其父類的一些方法 只要包括: sock=socket.socket() sk.bind(address) #

React 學習(七) ---- create-react-app

就是 提示 all 上網 一是 成功 原來 type 但是   現在react 基礎知識已經算是學完了,知道了React是做什麽的,以及怎麽使用,是時候學習一個webpack, babel 等現代化前端開發了,真正做項目的時候,我們不可能再使用babel 的線上編譯,一是很

Kubernetes 學習總結(3) Manifests

replicas 字母 network delay 擴展 wide 運行 節點 ports APIserver符合RESTful風格,支持GET/PUT/DELETE/POST等各種操作。所以也支持kubectl通過一系列命令對各處資源進行管理控制。常用的資源1)、work

React學習筆記之react基礎篇(1)

lis fun tst struct pan 流程 普通 如果 是把 一.React特點歸納   1.聲明式的視圖層:React 模板寫在 JS 文件中,而不是 html 的 <script> 標簽中。能使用所有 JS 語法,而不只有模板語法,所以更加靈活。  

React學習筆記之react進階篇(1)

ava 不能 success 字符 style 使用 -s 布爾 一次 1.組件的state(狀態) 1.選擇合適的state   state所代表的一個組件UI呈現的完整狀態集又可以分成兩類數據:用作渲染組件時使用到的數據的來源以及用作組件UI展現形式的判斷依據。 示

React學習筆記之react進階篇(2)

-s state ops category strong tro 服務 ive 周期 2.組件與服務器通信   組件的生命周期分為三個階段:掛載階段->更新階段->卸載階段,本文主要集中講述掛載和更新階段組件如何和服務器進行通信。 1.組件掛載階段通信  

React學習筆記之react基礎篇(2)

應用場景 組件 單元 ren provide form 實例 show wid   上一節我已經對React中基本的組件操作進行了說明,這一節我將對組件的一些附加屬性(如:組件的生命周期和組件的樣式)以及一些其他功能進行講解 一.組件的樣式 1.外部CSS樣式表: /

Linq to Sql學習總結3

儲存過程: 關係資料庫中的儲存過程在實體類中對映為具體的方法,直接將儲存過程拖動到對應的dbml設計檢視中即可,如圖: 在將儲存過程拖入dbml設計檢視中時,系統執行了如下命令: SET FMTONLY ON;--表示只獲取結果集的元資料(即相關列名 ) exec sp_Name SET

Web Service學習總結(3)xml操作相關的類

C#操作XML方法:新增、修改和刪除節點與屬性:https://www.cnblogs.com/lip-blog/p/7652544.html XElement與XmlElement相互轉換的程式碼:https://blog.csdn.net/xieyufei/article/det

RGB-D SLAM學習總結(3)

第三講 特徵提取和匹配 本講主要實現影象的特徵提取,影象間的匹配,以及相機轉換矩陣的求解。 高博的部落格中提供了兩幀影象做測試,就是這兩幀影象。。。千萬不要另存為。。。 由於具體程式碼已經有詳細介紹,這裡只往slamBase裡新增方法。 另外在使用的slambase標

react學習之路————react基礎知識

react基礎知識 1.什麼是pwa? pwa=漸進式web應用 pwa的好處:實現類似於app的離線快取功能 react中的registerServiceWorker+manifest.json就是用來實現這個功能的 2.react定位 2.1  宣告式開發:面