Vue重定向redirect的三種寫法總結(jié)
一、寫法 1:直接路徑跳轉(zhuǎn)(最簡(jiǎn)單)
const router = createRouter({
routes: [
{
path: '/原路徑', // 用戶訪問的路徑
redirect: '/目標(biāo)路徑' // 直接跳轉(zhuǎn)到這個(gè)路徑
}
]
})必記規(guī)則:
redirect后直接跟字符串路徑(必須以/開頭)。- 路徑必須存在:確保
/目標(biāo)路徑在路由配置里有對(duì)應(yīng)的組件。
示例:
{ path: '/old', redirect: '/new' } // 訪問 /old → 自動(dòng)跳轉(zhuǎn)到 /new二、寫法 2:通過路由名稱跳轉(zhuǎn)(更靈活)
const router = createRouter({
routes: [
{
path: '/原路徑',
redirect: { name: '目標(biāo)路由名稱' } // 通過路由的 name 屬性跳轉(zhuǎn)
},
// 必須先定義目標(biāo)路由,并設(shè)置 name
{
path: '/目標(biāo)路徑',
name: '目標(biāo)路由名稱', // 給路由起個(gè)名字
component: 目標(biāo)組件
}
]
})必記規(guī)則:
redirect后是對(duì)象,必須包含name屬性。- 路由名稱必須先定義:確保
name: '目標(biāo)路由名稱'在路由配置里存在。
示例:
{ path: '/user', redirect: { name: 'profile' } } // 訪問 /user → 跳轉(zhuǎn)到 name 為 profile 的路由三、寫法 3:動(dòng)態(tài)跳轉(zhuǎn)(帶參數(shù),最靈活)
const router = createRouter({
routes: [
{
path: '/原路徑/:參數(shù)名', // 帶動(dòng)態(tài)參數(shù)的路徑
redirect: to => {
// to 是當(dāng)前訪問的路由對(duì)象
return {
path: '/目標(biāo)路徑',
query: { 參數(shù)名: to.params.參數(shù)名 } // 傳遞參數(shù)
}
}
}
]
})必記規(guī)則:
redirect后是箭頭函數(shù),函數(shù)返回一個(gè)對(duì)象。
參數(shù)傳遞:
to.params.參數(shù)名→ 獲取當(dāng)前路由的動(dòng)態(tài)參數(shù)(如/user/123中的123)。query: { 參數(shù)名: 值 }→ 把參數(shù)轉(zhuǎn)為查詢參數(shù)(如?id=123)。
示例:
{
path: '/search/:keyword', // 訪問 /search/vue
redirect: to => {
return {
path: '/results',
query: { q: to.params.keyword } // 跳轉(zhuǎn)到 /results?q=vue
}
}
}四、核心規(guī)則速查表(必須記?。。?/h2>
| 寫法 | 固定格式 | 關(guān)鍵注意點(diǎn) |
|---|---|---|
| 直接路徑 | redirect: '/目標(biāo)路徑' | 路徑必須以 / 開頭,且已配置路由 |
| 路由名稱 | redirect: { name: '目標(biāo)名稱' } | 必須先定義帶 name 的路由 |
| 動(dòng)態(tài)跳轉(zhuǎn) | redirect: to => ({ ... }) | 用 to.params 獲取當(dāng)前路由參數(shù) |
五、完整示例(三種寫法對(duì)比)
import { createRouter, createWebHashHistory } from 'vue-router'
import Home from './views/Home.vue'
import Profile from './views/Profile.vue'
import Search from './views/Search.vue'
import Results from './views/Results.vue'
const router = createRouter({
history: createWebHashHistory(),
routes: [
// 寫法1:直接路徑跳轉(zhuǎn)
{ path: '/', redirect: '/home' },
// 寫法2:通過路由名稱跳轉(zhuǎn)
{ path: '/user', redirect: { name: 'profile' } },
{ path: '/profile', name: 'profile', component: Profile },
// 寫法3:動(dòng)態(tài)跳轉(zhuǎn)(帶參數(shù))
{
path: '/search/:keyword',
redirect: to => ({
path: '/results',
query: { q: to.params.keyword }
})
},
{ path: '/results', component: Results },
// 基礎(chǔ)路由
{ path: '/home', component: Home },
]
})
export default router六、一句話總結(jié)
重定向的本質(zhì)是 “訪問 A 路徑時(shí),自動(dòng)跳轉(zhuǎn)到 B 路徑”
三種寫法只是跳轉(zhuǎn)方式不同:
- 直接路徑:簡(jiǎn)單粗暴,適合固定跳轉(zhuǎn)。
- 路由名稱:解耦路徑,適合路徑可能變化的場(chǎng)景。
- 動(dòng)態(tài)跳轉(zhuǎn):帶參數(shù)傳遞,適合需要參數(shù)處理的場(chǎng)景。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue 實(shí)現(xiàn)前端權(quán)限控制的示例代碼
這篇文章主要介紹了Vue 實(shí)現(xiàn)前端權(quán)限控制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
vue實(shí)現(xiàn)echarts餅圖/柱狀圖點(diǎn)擊事件實(shí)例
echarts原生提供了相應(yīng)的API,只需要在配置好echarts之后綁定相應(yīng)的事件即可,下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)echarts餅圖/柱狀圖點(diǎn)擊事件的相關(guān)資料,需要的朋友可以參考下2023-06-06
Vue3實(shí)現(xiàn)vueFLow流程組件的詳細(xì)指南
VueFlow是一個(gè)專門為Vue.js框架設(shè)計(jì)的交互式可視化庫(kù),它允許開發(fā)者輕松創(chuàng)建和管理復(fù)雜的圖形模型,如流程圖、狀態(tài)機(jī)、組織結(jié)構(gòu)圖等,本文給大家介紹了Vue3實(shí)現(xiàn)vueFLow流程組件的詳細(xì)指南,需要的朋友可以參考下2024-11-11
Vue enter回車導(dǎo)致頁(yè)面刷新問題及解決
這篇文章主要介紹了Vue enter回車導(dǎo)致頁(yè)面刷新問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
基于Vue實(shí)現(xiàn)關(guān)鍵詞實(shí)時(shí)搜索高亮顯示關(guān)鍵詞
這篇文章主要介紹了基于Vue實(shí)現(xiàn)關(guān)鍵詞實(shí)時(shí)搜索高亮顯示關(guān)鍵詞,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-07-07
vue-router實(shí)現(xiàn)webApp切換頁(yè)面動(dòng)畫效果代碼
本篇文章主要介紹了vue實(shí)現(xiàn)app頁(yè)面切換效果實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-05-05
vue+webpack實(shí)現(xiàn)異步加載三種用法示例詳解
這篇文章主要介紹了vue+webpack實(shí)現(xiàn)異步加載的三種用法,文中給大家提到了vue+webpack實(shí)現(xiàn)異步組件加載的代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-04-04

