Vue 踩坑日志 - 有关路由传参的坑
1.有關(guān)路由傳參
vue中當(dāng)通過(guò)params傳過(guò)去的參數(shù)刷新頁(yè)面以后會(huì)消失,所以可以用query傳參。但此時(shí)又會(huì)出現(xiàn)另一個(gè)坑,刷新后數(shù)據(jù)仍在。但這是針對(duì)單個(gè)的某個(gè)變量的。
如果傳入一個(gè)對(duì)象的話,刷新頁(yè)面后會(huì)變成[object,object]。
那么這個(gè)問(wèn)題是如何產(chǎn)生的呢?
探究一下,發(fā)現(xiàn)
router他是一個(gè)鉤子,刷新頁(yè)面的時(shí)候,鉤子還是初始化狀態(tài),他的值是通過(guò)導(dǎo)航變化后,鉤子攔截導(dǎo)航是匹配產(chǎn)生的。
所以說(shuō)當(dāng)刷新頁(yè)面的時(shí)候,路由并沒(méi)有發(fā)生變化,也就不存在會(huì)給變量賦值。所以,此時(shí)會(huì)出現(xiàn)賦值失敗問(wèn)題。
(以上為個(gè)人理解,如果不對(duì)請(qǐng)指正)
問(wèn)題找出來(lái)了,怎么解決呢?
emmm.....
第一種:
首先我們要知道我們?cè)趥鞯倪@個(gè)對(duì)象中的變量是否都是我們需要的,或者這個(gè)對(duì)象中只包括很少的變量
我們就可以,用傳單個(gè)變量的形式,將他們傳過(guò)去。(有點(diǎn)廢話,但確實(shí)是個(gè)好辦法)
第二種:代碼
if(this.$route.query?instanceof?Object){
var?msg?=sessionStorage.setItem('item',Json.Stringify(this.$route.query))
if(msg){
this.item?=?JSON.parse(sessionStorage.getItem('item'))
}
}else{
this.item?=?JSON.parse(sessionStorage.getItem('item'))
}
解釋一下就是 先判斷 它的格式是否為對(duì)象,如果是就將他儲(chǔ)存到sessionStorage中,然后data中創(chuàng)建一個(gè)新的對(duì)象接受即可
JSON.stringify轉(zhuǎn)載于:https://www.cnblogs.com/-moon/p/11115376.html
總結(jié)
以上是生活随笔為你收集整理的Vue 踩坑日志 - 有关路由传参的坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于【 centos7】一 || 安装E
- 下一篇: 数组的reduce方法