最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue路由傳參避坑指南

 更新時(shí)間: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

先來看個(gè)簡(jiǎn)單的對(duì)比表格:

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

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

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

// 路由配置
{
  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)同時(shí)滿足這兩個(gè)條件時(shí)params一定有效:

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

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

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

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

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

三、為什么params會(huì)神秘消失?

1. 刷新丟失的真相

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

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

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

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

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

對(duì)比之下,query就是個(gè)老實(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ù)需要持久化時(shí),無腦用query!

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

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

// 路由配置
{
  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ù)雜場(chǎng)景用props:結(jié)合兩者優(yōu)點(diǎn)

重要提示

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

最后送大家一個(gè)參數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于vue-cli搭建多模塊且各模塊獨(dú)立打包的項(xiàng)目

    基于vue-cli搭建多模塊且各模塊獨(dú)立打包的項(xiàng)目

    這篇文章主要介紹了基于vue-cli搭建多模塊且各模塊獨(dú)立打包的項(xiàng)目,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Vue手動(dòng)控制點(diǎn)擊事件Click觸發(fā)方式

    Vue手動(dòng)控制點(diǎn)擊事件Click觸發(fā)方式

    這篇文章主要介紹了Vue手動(dòng)控制點(diǎn)擊事件Click觸發(fā)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Vue如何實(shí)現(xiàn)從response讀取流下載

    Vue如何實(shí)現(xiàn)從response讀取流下載

    這篇文章主要介紹了Vue如何實(shí)現(xiàn)從response讀取流下載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • VUE實(shí)現(xiàn)注冊(cè)與登錄效果

    VUE實(shí)現(xiàn)注冊(cè)與登錄效果

    這篇文章主要為大家詳細(xì)介紹了VUE實(shí)現(xiàn)注冊(cè)與登錄效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決vue-cli3 使用子目錄部署問題

    解決vue-cli3 使用子目錄部署問題

    這篇文章主要介紹了解決vue-cli3 使用子目錄部署問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • vue3之向echarts組件傳值的問題分析

    vue3之向echarts組件傳值的問題分析

    這篇文章主要介紹了vue3之向echarts組件傳值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue3靜態(tài)文件打包404的解決方案

    Vue3靜態(tài)文件打包404的解決方案

    在 Vue3 + Vite 項(xiàng)目開發(fā)過程中,經(jīng)常會(huì)遇到靜態(tài)資源文件在開發(fā)環(huán)境正常,但打包后出現(xiàn) 404 錯(cuò)誤的問題,本文通過一個(gè)實(shí)際案例——引入 MarchingSquares.js 庫的過程,詳細(xì)分析問題的原因和解決方案,需要的朋友可以參考下
    2026-01-01
  • Vue組件設(shè)計(jì)之多列表拖拽交換排序功能實(shí)現(xiàn)

    Vue組件設(shè)計(jì)之多列表拖拽交換排序功能實(shí)現(xiàn)

    這篇文章主要介紹了Vue組件設(shè)計(jì)之多列表拖拽交換排序,常見的場(chǎng)景有單列表拖拽排序,多列表拖拽交換排序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Vue中關(guān)于this指向的問題示例詳解

    Vue中關(guān)于this指向的問題示例詳解

    在Vue中,方法體里用this調(diào)用vue實(shí)例的數(shù)據(jù),有時(shí)會(huì)指向window,導(dǎo)致調(diào)用失敗報(bào)錯(cuò),這篇文章主要介紹了Vue中關(guān)于this指向的問題 ,需要的朋友可以參考下
    2022-07-07
  • Vue3響應(yīng)式方案及ref?reactive的區(qū)別詳解

    Vue3響應(yīng)式方案及ref?reactive的區(qū)別詳解

    眾所周知ref和reactive都是用來作響應(yīng)式數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Vue3響應(yīng)式方案及ref?reactive區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評(píng)論

于都县| 枣阳市| 忻城县| 铜梁县| 太谷县| 镇原县| 新昌县| 蚌埠市| 长武县| 曲靖市| 桐乡市| 台山市| 西华县| 阳原县| 徐闻县| 皋兰县| 怀宁县| 敦煌市| 柘城县| 霍邱县| 常山县| 高淳县| 阿拉善左旗| 尼勒克县| 武定县| 安庆市| 双桥区| 富顺县| 手游| 新沂市| 北川| 天等县| 德昌县| 临沭县| 渝北区| 嘉鱼县| 嵊泗县| 镶黄旗| 汨罗市| 龙山县| 历史|