色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

如何處理vue router 路由傳參刷新頁面參數(shù)丟失

瀏覽:6日期:2022-09-29 18:50:28
目錄概述方法一:通過 params 傳參方法二:通過 query 傳參方法三:使用 props 配合組件路由解耦概述

常見場景:點(diǎn)擊列表的詳情,跳轉(zhuǎn)到詳情內(nèi)頁,在內(nèi)頁根據(jù)傳遞的參數(shù)獲取詳情數(shù)據(jù)。

如何處理vue router 路由傳參刷新頁面參數(shù)丟失

路由傳參一般有如下幾種方式,下面主要介編程式導(dǎo)航 router.push 的傳參方式:

方法一:通過 params 傳參

路由配置如下:

{ path: ’/detail/:id’, //若id后面加?代表這個(gè)參數(shù)是可選的 name: ’detail’, component: Detail }

通過 $router.push 中 path 攜帶參數(shù)的方式

// 列表中的傳參goDetail(row) { this.$router.push({path: `/detail/${row.id}` })}// 詳情頁獲取參數(shù)this.$route.params.id

通過 $router.push 的 params 傳參

// 列表頁傳參goDetail(row) { this.$router.push({name: ’detail’,params: { id: row.id} })}// 詳情頁獲取this.$route.params.id

注:這種方式的傳參,路徑用 name,路徑用 name,路徑用 name , 用 path 會獲取不到;如果在路由配置中沒有添加 /:id即 path: ’detail’,url 中不會顯示 id,在詳情頁還是可以拿到參數(shù) id,但刷新后參數(shù)丟失。

以上這兩種方式,傳遞的參數(shù) id 會在 url 后面顯示,如圖:

如何處理vue router 路由傳參刷新頁面參數(shù)丟失

傳遞的參數(shù)會暴露在網(wǎng)址中。

如果在路由中設(shè)置了params參數(shù) /:id,但是在跳轉(zhuǎn)的時(shí)候沒有傳遞參數(shù),會導(dǎo)致頁面沒有內(nèi)容或跳轉(zhuǎn)失敗,可在后面加 ?代表這個(gè)參數(shù)是可選的,即 /:id?

方法二:通過 query 傳參

// 路由配置{ path: ’/detail’, name: ’detail’, component: Detail }// 列表頁goDetail(row) { this.$router.push({path: ’/detail’,query: { id: row.id} })}// 詳情頁this.$route.query.id

注:這種方式傳遞的參數(shù)會在地址欄的 url 后面顯示 ?id=?,類似于 get 傳參;query 必須配合 path 來傳參。

傳遞的參數(shù)是對象或數(shù)組

還有一種情況就是,如果通過 query 的方式傳遞對象或數(shù)組,在地址欄中會被強(qiáng)制轉(zhuǎn)換成 [object Object],刷新后也獲取不到對象值。

此時(shí)可以通過 JSON.stringify() 方法將要傳遞的參數(shù)轉(zhuǎn)換為字符串傳遞,在詳情頁再通過 JSON.parse() 轉(zhuǎn)換成對象。

let parObj = JSON.stringify(obj)this.$router.push({ path: ’/detail’, query: {’obj’: parObj }})// 詳情頁JSON.parse(this.$route.query.obj)

這個(gè)方法雖然可以傳遞對象,若數(shù)據(jù)少還好,數(shù)據(jù)多的話地址欄就很長了

注意:在所有的子組件中獲取路由參數(shù)是 $route不是 $router

以上 params 和 query 傳參方式對比:

通過 $router.push 的 params + name 傳參,若路由中沒有設(shè)置params參數(shù),參數(shù)不會拼接在路由后面,但是頁面刷新參數(shù)會丟失。 通過 $router.push 中 path 攜帶參數(shù)或通過 query 傳參,參數(shù)會拼接在地址后面,會暴露信息。方法三:使用 props 配合組件路由解耦

// 路由配置{ path: ’/detail/:id’, name: ’detail’, component: Detail, props: true // 如果props設(shè)置為true,$route.params將被設(shè)置為組件屬性}// 列表頁goDetail(row) { this.$router.push({path: ’/detail’,query: { id: row.id} })}// 詳情頁export default { props: {// 將路由中傳遞的參數(shù)id解耦到組件的props屬性上id: String }, mounted: {console.log(this.id) }}

此外,還可以通過把參數(shù)存在 sessionStorage 或 localStorage 中來解決頁面刷新參數(shù)丟失的問題,具體結(jié)合實(shí)際項(xiàng)目即可。

以上就是如何處理vue router 路由傳參刷新頁面參數(shù)丟失的詳細(xì)內(nèi)容,更多關(guān)于vue的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 欧洲一级大片 | 成人羞羞视频国产 | 国产农村乱子伦精品视频 | 日韩在线视频线视频免费网站 | 久草在线视频新时代视频 | 免费看操片 | 一区二区三区四区在线视频 | 在线中文 | 亚洲国产一区二区三区最新 | 久久久网站亚洲第一 | 一区二区三区四区五区六区 | 狼人青草久久网尹人 | 国产午夜爽爽窝窝在线观看 | 99re国产视频 | 日本一级爽毛片在线看 | 日韩不卡一区二区 | 亚洲在线观看免费 | 成年人网站在线观看视频 | 日本 片 成人 在线 日本68xxxxxxxxx老师 | 成人在线免费观看网站 | 极品色在线精品视频 | 在线亚洲精品国产成人二区 | 在线观看免费av网站 | 成人看片黄a在线观看 | 香蕉香蕉国产片一级一级毛片 | 美女张开双腿让男人桶视频免费 | 精品国产精品国产 | 在线满18网站观看视频 | 男人的天堂在线观看视频不卡 | 美国一级欧美三级 | 日韩影院久久 | 成人国产精品久久久免费 | 欧美毛片| 国产一区二区日韩欧美在线 | 国产欧美成人 | 欧美日一本 | 亚洲最大成人 | 久草免费资源 | 亚洲国内精品自在线影视 | 国产精品福利午夜h视频 | 亚洲天堂在线视频播放 |