欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue路由傳參避坑指南

 更新時間:2025年07月07日 10:55:35   作者:江城開朗的豌豆  
Vue.js是一款流行的前端框架,它的路由管理器Vue Router是實(shí)現(xiàn)單頁面應(yīng)用功能的重要組成部分,在構(gòu)建SPA的過程中,我們經(jīng)常需要在不同的路由之間傳遞參數(shù),Vue Router提供了兩種主要的參數(shù)傳遞方式query和params,下面將詳細(xì)介紹這兩種方法的避坑指南

一、路由傳參的"雙胞胎":params和query

先來看個簡單的對比表格:

特性paramsquery
URL顯示不顯示顯示為?key=value
路由配置需要動態(tài)路由不需要特殊配置
刷新保留可能丟失始終保留
適用場景敏感/簡短數(shù)據(jù)可分享的公開數(shù)據(jù)

二、params的"玄學(xué)"生效時刻

1. 生效的情況(正確姿勢)

// 路由配置
{
  path: '/user/:userId',
  name: 'UserPage',
  component: User
}

// 跳轉(zhuǎn)方式1:命名路由+params
this.$router.push({
  name: 'UserPage',
  params: { userId: '我' }  // ? 有效
})

// 跳轉(zhuǎn)方式2:完整path+params
this.$router.push({
  path: '/user/我',
  params: { age: 18 }  // ? age也能收到
})

的實(shí)戰(zhàn)經(jīng)驗(yàn):當(dāng)同時滿足這兩個條件時params一定有效:

  1. 路由配置了動態(tài)參數(shù)(如:userId
  2. 使用命名路由(name)跳轉(zhuǎn)

2. 失效的情況(天坑預(yù)警)

// 錯誤示范1:path跳轉(zhuǎn)+params
this.$router.push({
  path: '/user',
  params: { userId: '我' }  // ? 完全丟失
})

// 錯誤示范2:未配置動態(tài)路由
{
  path: '/product',
  name: 'Product',
  component: Product
}
this.$router.push({
  name: 'Product',
  params: { id: 123 }  // ? 刷新后丟失
})

血淚教訓(xùn):params就像個傲嬌的小姑娘,你得完全按照她的規(guī)矩來!

三、為什么params會神秘消失?

1. 刷新丟失的真相

  • params實(shí)際上是存儲在內(nèi)存中的
  • 刷新頁面時內(nèi)存被清空
  • 除非參數(shù)是URL的一部分(動態(tài)路由),否則無法恢復(fù)

2. 路徑跳轉(zhuǎn)的陷阱

// 這種寫法params會消失!
this.$router.push({
  path: '/user/我',  // 雖然URL對了
  params: { from: 'home' }  // ? from參數(shù)會消失
})

// 正確寫法應(yīng)該這樣
this.$router.push({
  name: 'UserPage',
  params: { 
    userId: '我',
    from: 'home'  // ? 兩個參數(shù)都能收到
  }
})

四、query的穩(wěn)定發(fā)揮

對比之下,query就是個老實(shí)人:

// 路由配置
{
  path: '/search',
  component: Search
}

// 跳轉(zhuǎn)方式
this.$router.push({
  path: '/search',
  query: { keyword: 'Vue教程' }  // → /search?keyword=Vue教程
})

// 獲取方式(在任何跳轉(zhuǎn)方式下都有效)
this.$route.query.keyword

的推薦:需要分享鏈接或者參數(shù)需要持久化時,無腦用query!

五、終極解決方案:props解耦

實(shí)在被params搞瘋的話,試試這個終極方案:

// 路由配置
{
  path: '/article/:id',
  component: Article,
  props: route => ({
    id: route.params.id,
    from: route.query.from
  })
}

// 組件內(nèi)
export default {
  props: ['id', 'from']  // 像普通props一樣使用
}

優(yōu)點(diǎn):

  • 解耦路由參數(shù)
  • 類型檢查更方便
  • 復(fù)用組件更靈活

六、小楊的傳參黃金法則

敏感數(shù)據(jù)走params:比如用戶ID、token等

分享鏈接用query:搜索條件、分頁參數(shù)等

復(fù)雜場景用props:結(jié)合兩者優(yōu)點(diǎn)

重要提示

  • 永遠(yuǎn)不要相信params在刷新后還存在
  • 關(guān)鍵參數(shù)一定要有URL備份
  • 測試時務(wù)必檢查刷新后的表現(xiàn)

最后送大家一個參數(shù)校驗(yàn)的實(shí)用代碼:

router.beforeEach((to, from, next) => {
  if (to.name === 'Payment' && !to.params.orderId) {
    next({ name: 'Error', query: { msg: '訂單ID缺失' } })
  } else {
    next()
  }
})

今天的路由傳參避坑指南就到這里啦!

寫在最后?

到此這篇關(guān)于Vue路由傳參避坑指南的文章就介紹到這了,更多相關(guān)Vue路由傳參避坑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unocss(原子化css)?使用及vue3?+?vite?+?ts講解

    Unocss(原子化css)?使用及vue3?+?vite?+?ts講解

    這篇文章主要介紹了Unocss(原子化css)使用vue3?+?vite?+?ts的方法,簡單介紹了Unocss使用及圖標(biāo)庫使用,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 7個適用于Vue?3的高顏值UI組件庫

    7個適用于Vue?3的高顏值UI組件庫

    這篇文章主要給大家分享介紹了7個適用于Vue?3的高顏值UI組件庫,合理利用,又或者學(xué)習(xí)借鑒都是不錯的選擇,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明

    vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明

    這篇文章主要介紹了vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue+element實(shí)現(xiàn)批量刪除功能的示例

    vue+element實(shí)現(xiàn)批量刪除功能的示例

    下面小編就為大家分享一篇vue+element實(shí)現(xiàn)批量刪除功能的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue父子組件的嵌套的示例代碼

    vue父子組件的嵌套的示例代碼

    本篇文章主要介紹了vue父子組件的嵌套的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue3+el-table實(shí)現(xiàn)行列轉(zhuǎn)換

    vue3+el-table實(shí)現(xiàn)行列轉(zhuǎn)換

    在處理文本數(shù)據(jù)的時候,我們經(jīng)常會需要把文本數(shù)據(jù)的行與列進(jìn)行轉(zhuǎn)換操作,這樣更方便查看,本文就詳細(xì)的介紹了vue3+el-table實(shí)現(xiàn)行列轉(zhuǎn)換,感興趣的可以了解一下
    2021-06-06
  • vuex的使用及持久化state的方式詳解

    vuex的使用及持久化state的方式詳解

    這篇文章主要介紹了vuex的使用及持久化state的方式詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue自定義指令拖拽功能示例

    Vue自定義指令拖拽功能示例

    本文給大家分享vue自定義指令拖拽功能及自定義鍵盤信息,非常不錯,具有參考借鑒價值,需要的的朋友參考下
    2017-02-02
  • Vue實(shí)現(xiàn)簡易購物車案例

    Vue實(shí)現(xiàn)簡易購物車案例

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡易購物車案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue.js中讓人容易忽略的API詳解

    Vue.js中讓人容易忽略的API詳解

    Vue.js是構(gòu)建Web界面的漸進(jìn)式JavaScript框架,通過簡潔的 API 提供高效的數(shù)據(jù)綁定和靈活的組件系統(tǒng),這篇文章主要給大家介紹了關(guān)于Vue.js中讓人容易忽略的API的相關(guān)資料,需要的朋友可以參考下
    2021-09-09

最新評論