vue當前路由跳轉初步研究


  一樣閑話少說,直接上問題,如圖:

  也是消息面板,沒想到一個小小的消息面板,碰到這么多坑,惆悵。

  就是如果當前路由和跳轉路由不一樣時,正常跳轉沒有任何問題。但是如果一樣時,就不會跳轉了,用了很多方法,比如給router-view加key,beforeRouterLeave,watch路由等都沒有效果。這個路由跳轉用的是params形式

<router-link :to="{
  name:item.route,   params:{     messageId:item.rid   } }"></router-link>

  我在路由的beforeRouterLeave,beforeEach加斷點,發現根本就不會走進去。后來自己胡亂猜測了一下,是不是雖然是params變了,但是路由name根本一點沒變,所以路由根本就不動。但是一直又有個疑問,為什么下面這樣計算屬性,隨route的params變化,都不起作用,完全進不了這個方法,watch也是類似,希望大神看到可以指點一二。

 computed:{ activeQuery(){ return this.$route.params + new Date() } }

  后來想着換個方式,換query試試,因為query后面會跟  ?aa=22  類似的東西,想着這樣是不是就能變化。

  首先瀏覽器渲染加了參數

  beforeEach也會走進去,我們看下to和from區別:可以看到name一樣,path一樣,但是fullPath不一樣

  多看一個:可以看到同樣也是name一樣,path一樣,但是fullPath不一樣

  然后我們每次也會走進計算屬性那個方法

  這樣其實就可以看到,我們的問題基本解決了。

  所以總結一下:大膽猜測,路由的跳轉看的就是fullPath,fullPath不變化,就不會跳轉。fullPath變化,都會觸發跳轉

  所以我們再試一下,繼續點481,發現確實一點debugger都沒有了。

  然后就是router-view的key:無key的話,路由復用不加載;有key的話,重新加載

<router-view :key="activeQuery"></router-view> computed:{   activeQuery(){     return this.$route.query + new Date()   } }

 


免責聲明!

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



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