前端路由實作react-router的使用方法詳解
本篇文章主要介紹了詳解前端路由和react-router使用姿勢,詳細的介紹了react-router的用法,有興趣的可以了解一下
路由
對於有SPA開發經驗的人來說,路由這個名詞並不陌生,前端的路由和後端的路由在實現技術上不一樣,但是原理都是一樣的。在 HTML5 的 history API 出現之前,前端的路由都是透過 hash 來實現的,hash 可以相容於低版本的瀏覽器。它的 URI 規則中需要帶上 #。 Web 服務不會解析hash,也就是說# 後的內容Web 服務都會自動忽略,但是JavaScript 是可以透過window.location.hash 讀取到的,讀取到路徑加以解析之後就可以回應不同路徑的邏輯處理。
簡單介紹AngularJs UI-Router路由
如果你有過AngularJS開發經驗,#並不陌生,angularjs有自己官方實現的路由體系,也有比較具代表性的第三方巢狀路由機制UI-Router; 如下程式碼區塊所示:
.state("main.list",angularAMD.route({ url : '/list/:params',//url &参数 views : { "header@main" : angularAMD.route({ templateUrl : 'simple/view/main/html/main/Header.html', controller:'HeadController', controllerUrl:[ ****.js ] }), "menu@main" : angularAMD.route({ templateUrl : 'simple/view/main/html/main/MenuModule.html', controller : "MenuController", controllerUrl:[ ****.js] }), "mainContent@main":angularAMD.route({ templateUrl : 'simple/view/main/html/main/MainContent.html' }) } }))
state()函數的第一個參數就是路由,「main.list」 是一個巢狀路由機制,當頁面跳到「main.list」路由下時會先載入state(「main」,*)下的模組及其資源(html,js等),隨後載入state(”main.list”)下的模組和資源(html,js等),實作路由嵌套;
react-router
-先上一段程式碼
<Router history={ hashHistory }> <Route path='/' component={CoreLayout}> <IndexRoute component={HomeView}/> <Route path=”/HODE_ROUTE/:param“ component={HomeView}/> <Route path=“ /AUDIT_ROUTE/:param" component={AuditView}/> <Route path=“/CHART_ROUTE” component={ChartView}/> </Route> </Router>
React-router以jsx語法類似DOM結構的形式實作router嵌套;與AngularJs 的UI-Router看起來差異很大,實則思想雷同;
Angular的實作邏輯:
跳轉=》state=》module=》靜態資源(js,css, html)=》show(頁面展示)
react-router的實作邏輯:
跳轉=》path=》component=》靜態資源(js,css ,html)=》show(頁面展示)
本文主要講react-router,以下簡單介紹react-router的使用姿勢:
react-router常用元件入門
在巢狀路由
<Router history={hashHistory}> <Route path="/" component={App}> <Route path="/repos" component={Repos}/> <Route path="/about" component={About}/> </Route> </Router>
在上方程式碼中,使用者造訪/repos時,會先載入App元件,然後在它的內部再載入Repos元件。
<App> <Repos/> </App>
子路由也可以不寫在Router元件裡面,單獨傳入Router元件的routes屬性
let routes = <Route path="/" component={App}> <Route path="/repos" component={Repos}/> <Route path="/about" component={About}/> </Route>; <Router routes={routes} history={browserHistory}/>
path 屬性
Route元件的path屬性指定路由的符合規則,看下面範例
<Route path="inbox" component={Inbox}> <Route path="messages/:id" component={Message} /> </Route>
上面程式碼中,當使用者存取/inbox/messages/:id時,就會載入下面的元件。
<Inbox> <Message/> </Inbox>
IndexRoute 元件
類似index.html ,預設載入元件,下面程式碼預設載入home元件
<Router> <Route path="/" component={App}> <IndexRoute component={Home}/> <Route path="accounts" component={Accounts}/> <Route path="statements" component={Statements}/> </Route> </Router>
現在,使用者存取/的時候,載入的元件結構如下。
<App> <Home/> </App>
Redirect 元件
#Redirect元件用於路由的跳轉,也就是使用者存取一個路由,會自動跳到另一個路由。
<Route path="inbox" component={Inbox}> {/* 从 /inbox/messages/:id 跳转到 /messages/:id */} <Redirect from="messages/:id" to="/messages/:id" /> </Route>
現在存取/inbox/messages/5,會自動跳到/messages/5。
Link
Link元件用於取代a標籤,產生一個鏈接,允許使用者點擊後跳到另一個路由。它基本上就是a標籤的React 版本,可以接收Router的狀態。
表單處理
Link元件用於正常的使用者點擊跳轉,但有時還需要表單跳轉、點擊按鈕跳轉等動作。這些情況要怎麼跟React Router對接呢?
第一種方法是使用browserHistory.push
handleSubmit(event) { event.preventDefault() const userName = event.target.elements[0].value const repo = event.target.elements[1].value const path = `/repos/${userName}/${repo}` browserHistory.push(path) }
${userName} 一種後端語言常用的表達式寫法,可在字串中取變數
handleSubmit(event) { // ... this.context.router.push(path) },
第二種方法是使用context物件。
export default React.createClass({ // ask for `router` from context contextTypes: { router: React.PropTypes.object }, handleSubmit(event) { // ... this.context.router.push(path) }, })
多人合作開發router檔案管理
一般一個專案都會有一個統一的router文件,相當於一個router池,不同的請求,請求router池中所匹配的路徑,載入請求所需頁面。 but 。 。 。 每個開發者開發一個元件都會需要設定路由,會導致router檔案不易管理,容易導致衝突,甚至故障。 so。 。 ,也許,可能可以每個組件資料夾下對於一個XXX.router 文件,前端程式碼打包上傳到線上時觸發某個鉤子函數,將XXX.router文件統一合併到中央router文件中,從而避免多人操作router文件。
以上是前端路由實作react-router的使用方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

DirectX修復工具是專業的系統工具,主要功能是偵測目前系統的DirectX狀態,如果發現異常就可以直接修復。可能還有很多用戶不清楚DirectX修復工具怎麼用吧,以下就來看看詳細教學。 1、使用修復工具軟體進行修復檢測。 2、如果修復完成後提示C++元件有異常的問題,請點選取消按鈕,然後點選工具選單列。 3、點選選項按鈕,選擇擴展,點選開始擴展按鈕。 4、擴展完成後再重新進行檢測修復即可。 5、如果修復工具操作完成後仍未解決問題,可以嘗試卸載重新安裝報錯的程序。

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

有很多朋友還不知道百度網盤怎麼用,所以下面小編就講解了百度網盤的使用方法,有需要的小伙伴趕緊來看一下吧,相信對大家一定會有所幫助哦。第一步:安裝好百度網盤後直接登入(如圖);第二步:接著可依頁面提示選擇「我的分享」與「傳輸清單」(如圖);第三步:在「好友分享」裡可以把圖片和檔案直接分享給好友(如圖所示);第四步:接著選擇「分享」後可勾選電腦檔案或是網盤檔案(如圖所示);第五步:然後就可以尋找好友(如圖所示);第六步:還可以在「功能寶箱」中尋找自己需要的功能(如圖所示)。上面就是小編為大

程式語言PHP是一種用於Web開發的強大工具,能夠支援多種不同的程式設計邏輯和演算法。其中,實作斐波那契數列是一個常見且經典的程式設計問題。在這篇文章中,將介紹如何使用PHP程式語言來實作斐波那契數列的方法,並附上具體的程式碼範例。斐波那契數列是一個數學上的序列,其定義如下:數列的第一個和第二個元素為1,從第三個元素開始,每個元素的值等於前兩個元素的和。數列的前幾元

KMS啟動工具是一種用來啟動微軟Windows和Office產品的軟體工具。 KMS是KeyManagementService的縮寫,即金鑰管理服務。 KMS啟動工具透過模擬KMS伺服器的功能,使得電腦可以連接到這個虛擬的KMS伺服器,從而實現對Windows和Office產品的啟動。 KMS激活工具體積小巧,功能強大,可以一鍵永久激活,無需聯網狀態就可以激活任何版本的window系統和任何版本的Office軟體,是目前最成功的且經常更新的Windows激活工具,今天小編就跟大家介紹一下kms激活工

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

合併儲存格的快速鍵怎麼用在日常工作中,我們常常需要對表格進行編輯和排版。而合併單元格是一種常見的操作,可以將相鄰的多個單元格合併為一個單元格,以提高表格的美觀程度和資訊展示效果。在MicrosoftExcel和GoogleSheets等主流的電子表格軟體中,合併儲存格的操作非常簡便,可以透過快速鍵來實現。以下將介紹在這兩個軟體中合併儲存格的快速鍵用法。在

potplayer是一款非常強大的媒體播放器,但不少夥伴還不知道potplayer怎麼用,今天小編就來詳細介紹一下potplayer的使用方法,希望能幫助大家。 1.PotPlayer快捷鍵PotPlayer播放器預設常用快捷鍵如下:(1)播放/暫停:空格(2)音量:滑鼠滾輪,上下方向鍵(3)前進/後退:左右方向鍵(4)書籤:P-加入書籤,H-查看書籤(5)全螢幕/還原:Enter(6)倍速:C-加速,X-減速,Z-復位(按一次調整0.1倍速度,可以在0.2到12倍速之間調節)( 7)上/下一幀:D/
