match,location,history


哇,平常寫路由時基本就是簡單的按照組件給的示例寫,從來沒有考慮為什么,又遇見了路由相關的問題,先記錄一下問題,好好捋一下,哎,好香要個大佬來帶帶我呀,每次遇到問題要解決好久


問題: 判斷是否登錄之后跳轉到登錄頁面,路徑對了,但是卻沒有加載該頁面的內容?

截圖:

 

 思路:在checkLogin里用到了withRouter,不曉得是不是props沒傳過來,決定好好捋一下路由的原理,然后再去查究竟是哪里出了問題,但是真的好奇怪呀,之前的項目我也用到了react-router就沒這樣的問題...

解決進程:待解決(11.12  11:00)


 要被自己蠢哭了,是因為寫成大寫了......細心!細心!細心!

 

順便記錄一下在babel 7.1.0里如何配置@connect

 

 注意:因為在.babelrc里寫了就不要在package.json里寫了,刪除package.json里的babel配置,然后在.babelrc文件里做如下修改

     
"presets": ["@babel/preset-env", "react-app"],
 
 
修改於(11/12 15:30)

 

match:匹配路徑參數的對象

location:可以通過改變它相關的參數來改變路由

history:同上,另一種api,改變url而不刷新頁面

單頁面路由:每次切換頁面的時,不需要請求服務器,只要通過本地的js來切換即可. hash和history兩種路由模式。

hashchange 事件能監聽 url hash 的改變, popstate事件能監聽除 history.pushState() 和 history.replaceState() 外 url 的變化。

在html5中的history api包括兩個方法history.pushState()和history.replaceState(),包含一個事件history.onpopstate

history.pushState(stateObj, title, url)

  • stateObj為一個狀態對象,這個對象可以被popstate事件讀取到,也可以在history對象中獲取。
  • title為標題,但是瀏覽器目前還沒能實現,由於其本身是一個字符串,所以我們使用‘’來代替即可。
  • url為路徑。一般設定為相對的url,絕對路徑需要保證同源。 

  pushState向瀏覽器的歷史記錄棧中壓入一個歷史記錄。

history.replaceState()

  這個就比較好理解了,接受的參數都是一樣的,作用就是替換當前歷史記錄棧中的記錄。

onpopstate事件  

  在瀏覽器前進、后退時觸發,一般就是歷史記錄棧中的指針改變的時候就會觸發這個事件了。


 

 參考來源:

 1.單頁面應用路由的兩種實現方式    https://www.cnblogs.com/zhuzhenwei918/p/7421430.html

 2.徹底搞懂路由跳轉:location 和 history 接口  https://segmentfault.com/a/1190000014120456

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM