Vue實現(xiàn)路由跳轉(zhuǎn)的多種方式匯總
今天咱們不聊人生理想,就聊聊Vue里那些讓人又愛又恨的路由跳轉(zhuǎn)方式。保證看完這篇,你再也不會在路由跳轉(zhuǎn)上栽跟頭!
一、路由跳轉(zhuǎn)的"基本款"
1. 聲明式導(dǎo)航 - 優(yōu)雅的模板寫法
<router-link to="/home">回家</router-link>
<router-link :to="{ path: '/profile' }">我的主頁</router-link>
我的個人心得:
- 就像穿衣服,這種寫法最"體面"
- 會自動渲染成
<a>標(biāo)簽,SEO友好 - 支持active-class高亮,做導(dǎo)航菜單 特別香
2. 編程式導(dǎo)航 - 靈活的JS操作
// 基本跳轉(zhuǎn)
this.$router.push('/home')
// 帶參數(shù)跳轉(zhuǎn)
this.$router.push({ path: '/user', query: { id: '123' } })
// 命名路由跳轉(zhuǎn)
this.$router.push({ name: 'user', params: { username: '我' } })
我踩過的坑提醒:
// params傳參必須用name,不能用path!
this.$router.push({
name: 'user',
params: { userId: '007' } // ? 正確
})
this.$router.push({
path: '/user',
params: { userId: '007' } // ? 無效!
})
二、進(jìn)階跳轉(zhuǎn)技巧
1. 替換當(dāng)前路由(不留下歷史記錄)
this.$router.replace('/login')
// 相當(dāng)于把當(dāng)前路由"覆蓋"掉
適用場景:
- 登錄后跳轉(zhuǎn),不讓用戶點返回又回到登錄頁
- 表單分步驟提交,不需要回退到上一步
2. 前進(jìn)后退控制
// 后退一步 this.$router.go(-1) // 前進(jìn)兩步 this.$router.go(2)
我的實戰(zhàn)案例:
// 支付完成后禁止返回
paySuccess() {
this.$router.replace('/success')
// 再鎖死后退按鈕
window.history.pushState(null, null, document.URL)
}
三、特殊跳轉(zhuǎn)場景處理
1. 帶參數(shù)跳轉(zhuǎn)的三種姿勢
// 方式1:query傳參(URL可見)
this.$router.push({
path: '/search',
query: { keyword: 'Vue' } // → /search?keyword=Vue
})
// 方式2:params傳參(URL不可見)
this.$router.push({
name: 'user',
params: { id: 123 } // → /user/123(需提前配置動態(tài)路由)
})
// 方式3:props解耦(推薦?。?
{
path: '/user/:id',
name: 'user',
component: User,
props: true // 自動將params轉(zhuǎn)為props
}
2. 跳轉(zhuǎn)前確認(rèn)攔截
this.$router.push({
path: '/important',
query: { confirm: true }
}).catch(err => {
// 用戶取消了導(dǎo)航
if (err.name === 'NavigationDuplicated') {
alert('別急,已經(jīng)在當(dāng)前頁啦!')
}
})
四、小楊的跳轉(zhuǎn)最佳實踐
簡單跳轉(zhuǎn):直接用<router-link>,省心省力
復(fù)雜跳轉(zhuǎn):用編程式導(dǎo)航,靈活控制
參數(shù)傳遞:
- 需要分享URL用
query - 敏感信息用
params - 組件復(fù)用推薦
props
異常處理:永遠(yuǎn)記得catch導(dǎo)航錯誤
最后送大家一個路由跳轉(zhuǎn)攔截的實用代碼:
router.beforeEach((to, from, next) => {
if (to.path === '/vip' && !我.isVip) {
next('/pay') // 不是VIP?先去充值!
} else {
next()
}
})
今天的路由跳轉(zhuǎn)小課堂就到這里啦!覺得有用的話,別忘了點個贊~有什么問題歡迎評論區(qū)交流,我看到都會回復(fù)的!
寫在最后?
到此這篇關(guān)于Vue實現(xiàn)路由跳轉(zhuǎn)的多種方式匯總的文章就介紹到這了,更多相關(guān)Vue路由跳轉(zhuǎn)方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue 按照創(chuàng)建時間和當(dāng)前時間顯示操作(剛剛,幾小時前,幾天前)
這篇文章主要介紹了Vue 按照創(chuàng)建時間和當(dāng)前時間顯示操作(剛剛,幾小時前,幾天前),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
vue3超出文本展示el tooltip實現(xiàn)示例
這篇文章主要為大家介紹了vue3超出文本展示el tooltip實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
vue組件Prop傳遞數(shù)據(jù)的實現(xiàn)示例
本篇文章主要介紹了vue組件Prop傳遞數(shù)據(jù)的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
vue中transition組件在項目中運(yùn)用小結(jié)
這篇文章主要介紹了vue中transition組件在項目中運(yùn)用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
vue項目使用定時器每隔幾秒運(yùn)行一次某方法代碼實例
有時候在項目中我們經(jīng)常需要設(shè)置簡單的倒計時功能,這個可以通過定時器來實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue項目使用定時器每隔幾秒運(yùn)行一次某方法的相關(guān)資料,需要的朋友可以參考下2023-04-04
vue3中<script?setup>?和?setup函數(shù)的區(qū)別對比

