web前端技術分享:使用react實現簡易路由
眾所周知,在 web前端開發單頁面使用路由目前有兩種方式可以實現,一種是使用hash模式,另外一種就是history模式,今天小千就來給大家介紹一下這個history模式,喜歡的話記得收藏。
history 模式
路由原理:
History 模式是 HTML5 新推出的功能,基於pushState和popstate兩個api實現的,比之 Hash 模式更加美觀。
當首次進入專案,向伺服器傳送請求,後端需要配合重定向,凡是處理不了的請求都響應單頁面的html。跳轉進入路由由pushState完成,並且匹配路由顯示對應的頁面。而路由執行回退時,監聽popstate事件,顯示對應的頁面。
react程式碼實現:
1.使用react腳手架構建一個react的專案:
>npx create-react-app my-app
2.建立兩個元件home.js,setting.js,使用history路由來實現兩個元件的切換。
專案目錄如下:
3.在App.js檔案中,我們需要實現如下的效果:
4.整個結構使用Router元件包裹,由Route元件承載每一項路由的元件,由Link標籤實現切換。那麼我們來看一下router內部如何實現的。
先來看一下router資料夾的結構:
元件Router,Route,Link在router/Route.js,router /Route.js,route/Link.js三個檔案中實現。router/index.js將三個元件整合方便外部呼叫。來看一下index.js的內容:
5.整個路由專案被Router標籤包裹,實際上需要達到共享路由當前地址的目的,藉助react中的context來實現。同時Router元件需要在專案首次載入時解析當前的pathname值。並且監聽瀏覽器回退事件,也需要修改路由共享地址的值。另外,專案每一次重新進入,不管訪問地址是什麼,都需要後臺響應index.html頁面,載入專案程式碼,由前端專案來控制顯示路由管理的元件(這部分需求需要後臺配合實現)。修改程式碼如下:
6.Route元件是根據當前的history地址判斷當前的Route承載的元件是否應該顯示,程式碼如下:
注:如果需要實現路由巢狀和動態路由,當前的history地址和元件配置的地址比較就不是使用===判斷這麼簡單了,在這裡我不做陳述,感興趣的話可以自己研究一下。
7.Link元件需要觸發使用pushState切換瀏覽器地址而有不會向伺服器請求,並且修改context中的history地址。程式碼如下:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2770933/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於react的hash路由簡易實現React路由
- web前端技術分享:koa中介軟體是如何實現的?Web前端
- web技術分享| 虛擬列表實現Web
- 前端技術 | react-router,去中心化式路由前端React中心化路由
- 如何在Web前端實現CAD圖文字全文搜尋功能之技術分享Web前端
- web前端技術分享:常用JavaScript框架有哪些?Web前端JavaScript框架
- web前端技術分享Electron之Renderer Process APIWeb前端API
- web前端技術分享Electron之IPC 通訊Web前端
- web前端技術分享之頁面元素水平居中Web前端
- web技術分享| 快速實現一個呼叫邀請 SDKWeb
- 前端技術演進(一):Web前端技術基礎前端Web
- react/vue中dom-diff簡易版實現ReactVue
- 前端路由簡介以及vue-router實現原理前端路由Vue
- 如何提升web前端技術?Web前端
- 好程式設計師web前端技術分享css盒模型程式設計師Web前端CSS模型
- 前端路由實現原理前端路由
- Web前端是什麼?Web前端包括哪些技術?Web前端
- Web前端技術分享:img標籤下方出現空隙的問題解決方案Web前端
- web端作業控制系統簡易實現Web
- web前端教程分享:常見 React 面試題Web前端React面試題
- react筆記--手動實現一個react-router(簡易版)React筆記
- 前端兩種路由實現和使用場景前端路由
- Cocos 技術派:實時競技小遊戲技術實現分享遊戲
- 好程式設計師web前端技術分享媒體查詢程式設計師Web前端
- Web前端技術分享:全棧工程師常用的開發工具Web前端全棧工程師
- 前端路由實現及 react-router v4 原始碼分析前端路由React原始碼
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- web技術分享| 【高德地圖】實現自定義的軌跡回放Web地圖
- 前端 JavaScript 實現一個簡易計算器前端JavaScript
- web前端常用技術點001Web前端
- web前端技術Mongoose詳解Web前端Go
- 前端路由實現原理(history)前端路由
- 前端路由的實現原理前端路由
- 使用Node+React實現簡單CRUDReact
- 技術實踐丨React Native 專案 Web 端同構React NativeWeb
- Web前端技術分享:Javascript中的內建物件陣列講解Web前端JavaScript物件陣列
- web前端技術分享:多行文字溢位問題解決方案Web前端
- 前端狀態管理簡易實現(以vuex為例)前端Vue