首頁 web前端 js教程 前端路由實作react-router的使用方法詳解

前端路由實作react-router的使用方法詳解

Aug 11, 2017 am 11:48 AM
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=&#39;/&#39; 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

DirectX修復工具怎麼用? DirectX修復工具詳細使用方法 DirectX修復工具怎麼用? DirectX修復工具詳細使用方法 Mar 15, 2024 am 08:31 AM

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

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

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

百度網盤怎麼用-百度網盤的使用方法 百度網盤怎麼用-百度網盤的使用方法 Mar 04, 2024 pm 09:28 PM

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

PHP程式設計指南:實作斐波那契數列的方法 PHP程式設計指南:實作斐波那契數列的方法 Mar 20, 2024 pm 04:54 PM

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

KMS啟動工具是什麼? KMS啟動工具怎麼用? KMS啟動工具使用方法? KMS啟動工具是什麼? KMS啟動工具怎麼用? KMS啟動工具使用方法? Mar 18, 2024 am 11:07 AM

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

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

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

如何使用快捷鍵合併儲存格 如何使用快捷鍵合併儲存格 Feb 26, 2024 am 10:27 AM

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

potplayer怎麼用-potplayer的使用方法 potplayer怎麼用-potplayer的使用方法 Mar 04, 2024 pm 06:10 PM

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/

See all articles