開心生活站

位置:首頁 > IT科技 > 

vue路由跳轉

IT科技2.21W

方法一:router-link (聲明式路由)

1、 不帶參數

<router-link :to="{name:'home'}"> 

<router-link :to="{path:'/home'}"> //name,path都行, 建議用name  

// 注意:router-link中鏈接如果是'/'開始就是從根路由開始,如果開始不帶'/',則從當前路由開始。

2、帶參數

<router-link :to="{name:'home', params: {id:1}}">  

// params傳參數 (類似post)

// 路由配置 path: "/home/:id" 或者 path: "/home:id" 

// 不配置path ,第一次可請求,刷新頁面id會消失

// 配置path,刷新頁面id會保留

// html 取參  $route.params.id

// script 取參  this.$route.params.id

<router-link :to="{name:'home', query: {id:1}}"> 

vue路由跳轉

方法二:router.push(編程式路由)

// 字符串

router.push('home')

// 對象

router.push({ path: 'home' })

// 命名的路由

router.push({ name: 'user', params: { userId: '123' }})

// 帶查詢參數,變成 /register?plan=private

router.push({ path: 'register', query: { plan: 'private' }})

注意:如果提供了 path,params 會被忽略,上述例子中的 query 並不屬於這種情況。取而代之的是下面例子的做法,你需要提供路由的 name 或手寫完整的帶有參數的 path:

const userId = '123'

router.push({ name: 'user', params: { userId }}) // -> /user/123

router.push({ path: `/user/${userId}` }) // -> /user/123

// 這裏的 params 不生效

router.push({ path: '/user', params: { userId }}) // -> /user

方法三:this.$router.push() (函數裏面調用)

1、不帶參數

this.$router.push('/home')

this.$router.push({name:'home'})

this.$router.push({path:'/home'})

2、 query傳參 

this.$router.push({name:'home',query: {id:'1'}})

this.$router.push({path:'/home',query: {id:'1'}})

// html 取參  $route.query.id

// script 取參  this.$route.query.id

3、params傳參

this.$router.push({name:'home',params: {id:'1'}})  // 只能用 name

// 路由配置 path: "/home/:id" 或者 path: "/home:id" ,

// 不配置path ,第一次可請求,刷新頁面id會消失

// 配置path,刷新頁面id會保留

// html 取參  $route.params.id

// script 取參  this.$route.params.id

4、query和params區別

query類似 get, 跳轉之後頁面 url後面會拼接參數,類似?id=1, 非重要性的可以這樣傳, 密碼之類還是用params刷新頁面id還在

params類似 post, 跳轉之後頁面 url後面不會拼接參數 , 但是刷新頁面id會消失

vue路由跳轉 第2張

方法四:this.$router.replace() (用法同上,push)

方法五:this.$router.go(n) ()

this.$router.go(n)

向前或者向後跳轉n個頁面,n可爲正整數或負整數

ps : 區別

this.$router.push

跳轉到指定url路徑,並想history棧中添加一個記錄,點擊後退會返回到上一個頁面

this.$router.replace

跳轉到指定url路徑,但是history棧中不會有記錄,點擊返回會跳轉到上上個頁面 (就是直接替換了當前頁面)

this.$router.go(n)

向前或者向後跳轉n個頁面,n可爲正整數或負整數

注意:

獲取路由上面的參數,用的是$route,後面沒有r

params是路由的一部分,必須要有。query是拼接在url後面的參數,沒有也沒關係。

params一旦設置在路由,params就是路由的一部分,如果這個路由有params傳參,但是在跳轉的時候沒有傳這個參數,會導致跳轉失敗或者頁面會沒有內容。

params、query不設置也可以傳參,但是params不設置的時候,刷新頁面或者返回參數會丟失,

標籤:跳轉 路由 vue