項目功能需要,要從列表頁跳轉到第三方提供的URL上(這里第三方頁面我是通過iframe引入在詳情頁,目的是點擊返回時可以通過keepAlive讓列表頁不刷新,如果不通過iframe直接跳第三方鏈接,那么返回必然會重新拉取數據),一路百度,剛開始使用
1
|
this
.$router.push({name:
'list'
, params:{id: id}})
|
在詳情頁獲取參數:
1
|
this
.$route.params.id
|
試了一下,可以拿到數據,很開心,本以為這樣就結束了,然后刷新了下頁面,發現頁面啥都沒了(因為傳過來的是URL),百度了下,原來這種傳參刷新頁面時參數會消失
沒辦法,問了下老大,他說用query屬性設置,於是就接着百度,找到大神的文章:https://blog.csdn.net/qq_43103581/article/details/82260073,套用里面的方法:
1
|
this
.$router.push({ name:
'NewsDetail'
, query: { newsUrl: url } })
|
然后在詳情頁這樣獲取參數:
1
|
this
.$route.query.newsUrl
|
保存,到頁面上重新試了一下,沒問題了。
當然了,大神的文章里也介紹了另一種路由傳參防止刷新參數消失的方法,也是使用最開始使用的那種方法,只是需要在路由中進行一些改動,下面我直接套用大神的代碼說明:
1
2
3
4
5
6
|
routes: [
{
path:
'/list/:id'
,
name:
'list'
}
]
|
1
|
this
.$router.push({name:
'list'
, params:{id: id}});
|
獲取參數:this.$route.params.id即可
總結:以上兩種方法均可實現路由傳參且防止刷新參數消失,喜歡哪種方法用哪種就好。