vue 路由 及 跳轉傳遞參數的總結


博客地址:https://ainyi.com/4

 

vue-router

  • vue-router 是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將路徑和組件映射起來。
  • 傳統的頁面應用,是用一些超鏈接來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是應該是路徑之間的切換,也就是組件的切換

1. 是路由和頁面(組件)對應

vue-router

 

2. 通過router-link進行跳轉

 1 <router-link 
 2     :to="{
 3         path: 'yourPath', 
 4         params: { 
 5             id: id, 
 6             dataObj: data
 7         },
 8         query: {
 9             id: id, 
10             dataObj: data
11         }
12     }">
13 </router-link>
  • 這里涉及到三個參數
path -> 是要跳轉的路由路徑(推薦換成 name 值,name: pathName ,命名路由,兩者都可以進行路由導航)
params -> 是要傳送的參數,參數可以直接 key:value 形式傳遞(類似post)
query -> 是通過 url 來傳遞參數的同樣是 key:value 形式傳遞(類似get)
接收參數:
this.$route.query.id
this.$route.params.id

關於path路徑加不加 / 的問題,加了/就是在根路徑下跳轉,不加就是在當前路徑后面跳轉,子頁面,使用命名路由就不用管加不加 / 的問題了

 

3. 復用組件時,想對路由參數的變化作出響應的話,可以 watch(監測變化) $route 對象

1 watch:{
2     //監聽相同路由下參數變化的時候,從而實現異步刷新
3     '$route'(to,from){
4         //做一些路由變化的響應
5         this.loading = true;//打開加載動畫
6         this.getCateShop();//重新獲取數據
7     },
8 },

 

4. 全局鈎子,在main.js配置,可用作用戶攔截

 1 //在進入路由之前, 每一次都會執行此方法  全局鈎子
 2 router.beforeEach(function(to,from,next){
 3   //設置網頁標題
 4   document.title = to.meta.title;
 5   //檢查是否已登錄
 6   let userObj = JSON.parse(sessionStorage.getItem('user'));
 7   if(userObj){
 8     //執行方法,將用戶名設置進全局參數  vuex
 9     //提交mutation的Types.SETUSERNAME方法
10     //第二個參數是攜帶的參數
11     //main.js使用vuex的提交方法,不需要this.$store.commit(),直接就store.commit()
12     store.commit(Types.SETUSERNAME,userObj.username);
13   }else{
14     //如果未登錄,想要進入admin目錄,則自動跳回首頁
15     if(to.path.indexOf('admin') != -1){
16     //   alert("進了");
17       router.push({name:'home'});
18     }
19   }
20   next(); //繼續往下走
21 });

 

 

博客地址:https://ainyi.com/4


免責聲明!

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



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