vue刷新頁(yè)面后params參數(shù)丟失的原因和解決方法
頁(yè)面跳轉(zhuǎn)($router)方式
方式一(刷新頁(yè)面參數(shù)會(huì)丟失)
此方法不會(huì)在瀏覽器 url 地址欄中顯示傳遞的參數(shù)
this.$router.push({ name: 'a', params: { name: '張三', age: '18' }}) // 頁(yè)面跳轉(zhuǎn)
this.$route.params // 參數(shù)接收方式二(刷新頁(yè)面參數(shù)不會(huì)丟失)
此方法會(huì)在瀏覽器 url 地址欄中顯示傳遞的參數(shù)(數(shù)據(jù)會(huì)暴露在外面),即:'a?name=張三&age=18'
this.$router.push({ path: 'a', query: { name: '張三', age: '18' }}) // 頁(yè)面跳轉(zhuǎn)
this.$route.query // 參數(shù)接收刷新頁(yè)面后 params 參數(shù)丟失
發(fā)送數(shù)據(jù)的頁(yè)面A
this.$router.push({ name: 'A', params: { name: '張三', age: '18' }})接收數(shù)據(jù)的頁(yè)面B
this.curObj = this.$route.params
當(dāng)進(jìn)入 B 頁(yè)面后,按 F5 刷新頁(yè)面 B 頁(yè)面接收的參數(shù)會(huì)丟失。
解決辦法
使用 localStorage 或 sessionStorage 瀏覽器自帶的 mini 數(shù)據(jù)庫(kù)(即本地存儲(chǔ))
存儲(chǔ)在 localStorage 里的數(shù)據(jù)如果不是主動(dòng)去清除的話(huà),就算瀏覽器關(guān)閉了,下次打開(kāi)瀏覽器數(shù)據(jù)還是會(huì)存在,是一個(gè)長(zhǎng)期的存在。
存儲(chǔ)在 sessionStorage 里的數(shù)據(jù)只要關(guān)閉瀏覽器就會(huì)自動(dòng)清除,但是刷新網(wǎng)頁(yè)不會(huì)清除,是一個(gè)臨時(shí)的存在。
可以利用 vue 里瀏覽器刷新不會(huì)觸發(fā) beforeDestory 生命周期函數(shù)和數(shù)據(jù)儲(chǔ)存本地這兩個(gè)方法來(lái)補(bǔ)全 params 刷新丟失數(shù)據(jù)的短板。
發(fā)送數(shù)據(jù)的頁(yè)面A
this.$router.push({ name: 'A', params: { name: '張三', age: '18' }})接收數(shù)據(jù)的頁(yè)面B
mounted() {
let routeParam = this.$route.params
if (Object.entries(routeParam).length === 0) {
routeParam = JSON.parse(sessionStorage.getItem('storageObj')) // 從本地存儲(chǔ)中獲取數(shù)據(jù)
} else {
sessionStorage.setItem('storageObj', JSON.stringify(routeParam)) // 將數(shù)據(jù)儲(chǔ)存在本地存儲(chǔ)里面
}
this.curObj = routeParam
},
beforeDestroy() {
sessionStorage.removeItem('storageObj') // 將數(shù)據(jù)從本地存儲(chǔ)刪掉
},沒(méi)有用 localStorage 是因?yàn)槿绻脩?hù)跳轉(zhuǎn)到頁(yè)面 B 后,直接關(guān)閉瀏覽器,再打開(kāi)瀏覽器輸入網(wǎng)址,就能從本地存儲(chǔ)找到該數(shù)據(jù),但 sessionStorage 關(guān)閉瀏覽器,數(shù)據(jù)就消失了。不會(huì)出現(xiàn) localStorage 的問(wèn)題。
以上就是vue刷新頁(yè)面后params參數(shù)丟失的原因和解決方法的詳細(xì)內(nèi)容,更多關(guān)于vue刷新頁(yè)面后params丟失的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue設(shè)置頁(yè)面輪詢(xún)實(shí)現(xiàn)方式
這篇文章主要介紹了Vue設(shè)置頁(yè)面輪詢(xún)實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-11-11
Vue實(shí)現(xiàn)回到頂部和底部動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)回到頂部和底部動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
從0到1解鎖Element-Plus組件二次封裝El-Dialog動(dòng)態(tài)調(diào)用的原理解析
作者通過(guò)二次封裝Element-Plus的el-dialog組件,實(shí)現(xiàn)動(dòng)態(tài)顯示與數(shù)據(jù)傳遞功能,提升項(xiàng)目靈活性和代碼復(fù)用性,適用于用戶(hù)編輯、文件上傳確認(rèn)、權(quán)限管理等多場(chǎng)景需求,本文給大家介紹從0到1解鎖Element-Plus組件二次封裝El-Dialog動(dòng)態(tài)調(diào)用的原理解析,感興趣的朋友一起看看吧2025-07-07
Vuex子模塊調(diào)用子模塊的actions或mutations實(shí)現(xiàn)方式
這篇文章主要介紹了Vuex子模塊調(diào)用子模塊的actions或mutations實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Vue中使用vue-count-to(數(shù)字滾動(dòng)插件)詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于Vue中使用vue-count-to(數(shù)字滾動(dòng)插件)的相關(guān)資料,最近需要開(kāi)發(fā)一個(gè)數(shù)字滾動(dòng)效果,在網(wǎng)上找到一個(gè)關(guān)于vue-countTo的插件,覺(jué)得這個(gè)插件還不錯(cuò),需要的朋友可以參考下2023-09-09

