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>
4.Link
Link元件用於取代
<a>
元素,生成一個連結,允許使用者點選後跳轉到另一個路由。
Link 可以設定屬性
- className : 設定靜態顯示類
- style : 設定靜態顯示樣式
- activeClassName : 新增訪問後類
- activeStyle : 設定訪問後樣式
5.IndexLink
如果想要連結到根路由,不要使用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 宣告式開發:面