$router 和 $route

1, router 和route 的區別

  • router爲 VueRouter 實例,是路由操做對象,只寫對象,想要導航到不一樣url,則使用router.push方法post

  • $route爲當前router跳轉對象,路由信息對象,只讀對象,裏面能夠獲取name、path、query、params等this

// this.$router.push()
    // this.$router.replace()
    // this.$router.go()
複製代碼

2, this.route.params和this.route.query

1, params方式傳參和接收參數url

// 傳參: 
this.$router.push({
    name: 'index'
    params:{
      id:id
    }
  })
  
// 接收參數:
this.$route.params.id
 
// url的表現形式(url中沒有參數)
http://localhost:8080/#/index

// 路由
{
   path: '/index/:id/:name',
   name: 'index',
   component: index // 這個index是傳進來的組件名稱
 }
複製代碼

2, query方式傳參和接收參數spa

// 傳參
this.$router.push({
    path: '/index'
    query:{
      id:id
    }
 })

//接收參數
this.$route.query.id

// url的表現形式(url中帶有參數)
http://localhost:8080/#/index?id=1
複製代碼
  • 1,params傳參,push裏面只能是 name:'xx',不能是path:'xx',由於params只能用name來引入路由,若是這裏寫成了path,接收參數頁面會是undefinedcode

  • 直白的來講query至關於get請求,頁面跳轉的時候,能夠在地址欄看到請求參數,而params至關於post請求,參數不會再地址欄中顯component

  • params是路由的一部分,必需要有 , query是拼接在url後面的參數,沒有也不要緊router

  • query刷新 不會 丟失query裏面的數據, params刷新 會 丟失 params裏面的數據cdn

  • 傳參是this.router,接收參數是this.route對象

相關文章
相關標籤/搜索