安裝:vue
npm install --save react-router
注意:若是您正在編寫將在瀏覽器中運行的應用程序,則應該安裝react-router-dom,一樣,若是您正在編寫ReactNative應用程序,則應該安裝react-router-native。
react
React-router提供一些router的核心api,包括Router,Route,Switch等,可是沒有提供dom操做進行跳轉的apivue-router
React-router-dom 提供了BrowserRouter ,Route ,Link 等api,咱們經過dom的事件控制路由 。例如點擊一個按鈕進行跳轉,因此咱們跟須要react-router-dom 安裝簡單 npm
npm install react-router-dom --save
HashRouter 和BrowserRouterapi
它們兩個是路由的基本,咱們須要將它們包裹在最外層,咱們只要選擇其中的一個就能夠。
HashRouter瀏覽器
若是你使用過react-router2或3或者vue-router,你常常會發現一個現象就是url中會有個#,例如:localhost:3000/# ,HashRouter就會出現這種狀況,它是經過hash值來對路徑進行控制的,如:HashRouter,你的路由就會默認有# 代碼以下:服務器
import React from 'react'; import ReactDOM from 'react-dom'; //import registerServiceWorker from './registerServiceWorker'; import {BrowserRouter , HashRouter , Route} from 'react-router-dom'; function home (){ return <h2>Home Page</h2> } ReactDOM.render ( <HashRouter> <Route path ='/' component = {home} ></Route> </HashRouter> ,document.getElementById('root'); ) //registerServiceWorker();
BrowserRouter
不少狀況下咱們不須要這個#,這時咱們就須要BrowserRouterreact-router
<BrowserRouter> <Route path ='/' component = {home} ></Route> </BrowserRouter> ,document.getElementById('root');
它的原理是使用HTML5 history API(pushState ,replaceState,popState)來使你的內容隨着url動態改變的。dom
若是你的文件是放在服務器的二級目錄下則能夠使用它。url
<BrowserRouter basename='/calendar'> <Route path ='/' component = {home} ></Route> </BrowserRouter> ,document.getElementById('root');
Router
Router是路由的一個原材料,它控制路徑嘴硬顯示的組件。咱們常常是exact,path 以及component屬性。
exact 控制匹配到路徑時不會再繼續向下匹配 ,path 標識路由的路徑 ,component表示路徑對應顯示的組件。
Link和NavLink的選擇
二者都是能夠控制路由跳轉的,不一樣點是NavLink的api更多 。
Link 主要api是to,to能夠接受string或者一個object,來控制url,使用方法以下
<Link to = '/courses' /> <Link to ={{ pathname :'/courses', search:'?sort =name', hash:'#the-hash', state:{fromDashboard:true} }} />
NavLink
<NavLink exact activeClassName='selected' to='/second/1234'>second</NavLink>
exact 用於嚴格匹配 ,匹配到/則不會繼續向下匹配 ,to 則是控制跳轉的路徑,activeClassName是選中狀態的類名, 咱們在/second後面
添加1234來想路由中傳遞消息,這結合了/second/:id。