vue-router 路由傳參問題(路由傳參方式)
需求描述
該問題是在希望在代碼實現(xiàn)路由跳轉(zhuǎn)的時候,傳遞一些數(shù)據(jù),而且傳遞數(shù)據(jù)較多,并存在一些敏感數(shù)據(jù)
代碼環(huán)境
"vue": "^3.3.4", "vue-router": "^4.2.4"
vue-router 路由傳參
路由傳參主要有兩種方式:
- 一種是路徑傳參
- 參數(shù)比較容易泄漏,容易直接通過瀏覽器路徑看到相關(guān)參數(shù)
- 一種是參數(shù)傳遞
實踐問題
import { useRoute, useRouter } from "vue-router"; //控制路由跳轉(zhuǎn) const router = useRouter(); router.push({path:"/user",query:{name:"fffff",age:18}}) router.push({path:"/user",params:{name:"fffff",age:18}}) //用于獲取路由參數(shù) const route = useRoute(); console.log(route.query.name)//fffff console.log(route.params.name)//undefined
通過以上代碼,發(fā)現(xiàn)通過query方式傳遞參數(shù)確實可以拿到數(shù)據(jù),但是該種方式會非常容易拿到路徑的參數(shù),個人感覺安全性較差,三方拿到數(shù)據(jù)比較容易
所以有嘗試通過params方式傳遞參數(shù),但是該種方式參數(shù)雖然不會出現(xiàn)在路徑上,但是拿不到參數(shù)????。?!網(wǎng)上有些說是寫法不對,應(yīng)該使用name的方式控制路由跳轉(zhuǎn)并傳參,使用path的方式會忽略params:
router.push({name:"user",params:{name:"fffff",age:18}})
但是實踐后發(fā)現(xiàn),哪怕使用了name 方式 依然無法拿到params的參數(shù),然后就說是vue-router的版本問題了,可能最新的版本存在問題
因為本人不想要進行版本回退,所以放棄了通過路由傳參,最終采用了通過 pinia(store) --維護全局數(shù)據(jù)的工具包的方式傳遞參數(shù)了
到此這篇關(guān)于vue-router 路由傳參問題的文章就介紹到這了,更多相關(guān)vue-router 路由傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實現(xiàn)監(jiān)聽數(shù)值的變化,并捕捉到
這篇文章主要介紹了vue實現(xiàn)監(jiān)聽數(shù)值的變化,并捕捉到問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10