日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

React-Router 源码分析1

發布時間:2023/11/29 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 React-Router 源码分析1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、單頁面應用的路由基本原理

demo1

router1.html 復制代碼

以 hash 形式為例。

1、init 監聽瀏覽器 url hash 更新事件。

2、route 存儲路由更新時的回調到回調數組routes中,回調函數將負責對頁面的更新。

3、refresh 執行當前url對應的回調函數,更新頁面

當 url 的 hash 發生變化時,觸發 hashchange 注冊的回調,回調中去進行不同的操作,進行不同的內容的展示。

History API 可以實現 path 形式

demo2

router2.html 復制代碼

react-router 是基于 history 模塊提供的 api 進行開發的。

這個例子來簡單模擬下 react-router 的模式。

Router 通過對 history 進行包裝開發,針對 historyModule 的機制對 Router 也起到了作用,即historyModule.updateLocation() 將觸發 Router.listen 中的回調函數

2、react-router 部分源碼探索與實踐

react-router 中 Router 部分源碼

Router 在這里對 history 進行了一個監聽,正常調用了 history 以后,這邊就會接收到這個更新,回調函數將在 url 更新時觸發, 并且觸發一次setState,觸發頁面刷新

Route 部分源碼

props.match為true 就會渲染出組件

mathPath 部分源碼

dva-router——react-router-dom/ react-router-redux

應用

ConnectedRouter 為 react-router-redux 內的對象 ConnectedRouter 的標簽

dva 的 router.js

dva 的 package.json

react-router-dom

Router / BrowserRouter / HashRouter / MemoryRouter / StaticRouter

BrowserRouter

HashRouter

MemoryRouter

<MemoryRouter> 組件在內存中保存“URL”信息,不會修改瀏覽器的地址欄,往往用于React Native 等非瀏覽器環境。

StaticRouter

<StaticRouter> 組件 不修改路由,這在服務器端渲染時很有用。

Route

Redirect

Switch

Link

react-router-redux

react-router-redux 是 React-Router 與 Redux 的深度集成,它將路由完全納入 store 中進行管理,使 store 成為了 URL(或者說是 history)的數據來源,也使我們能夠通過 dispatch action 的方式來修改 URL

ConnectedRouter

dispatch 就相當于調用了 history 的 push replace 等方法。當發起了一個dispatch并且正常調用了history以后,Router 就會接收到這個更新,并且觸發一次setState 刷新頁面

總結

以上是生活随笔為你收集整理的React-Router 源码分析1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。