在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ vue路由跳轉(zhuǎn)不刷新

vue路由跳轉(zhuǎn)不刷新

在'game-detail'頁(yè)面執(zhí)行this.$router.push()方法,跳轉(zhuǎn)到'game-detail',頁(yè)面不刷新。
因?yàn)槁酚芍黧w沒(méi)變,變的只是傳遞的參數(shù)id
所以從'game-detail?id=1'到'game-detail?id=2',并沒(méi)有跳轉(zhuǎn)。
但是可以在watch里監(jiān)聽(tīng)$route,監(jiān)聽(tīng)到id的變化。

后來(lái)我就在watch里邊監(jiān)聽(tīng)路由,點(diǎn)擊后……重新調(diào)用了獲取頁(yè)面數(shù)據(jù)的methods函數(shù)。
想通過(guò)刷新頁(yè)面數(shù)據(jù),再加上把滾動(dòng)條歸零,來(lái)模擬頁(yè)面的刷新。

然后……點(diǎn)擊后……數(shù)據(jù)刷新了,頁(yè)面沒(méi)變化……

父組件是通過(guò)props傳遞給子組件的,請(qǐng)問(wèn)我應(yīng)該在子組件里怎么做呢?

剛才百度了發(fā)現(xiàn)有的人說(shuō)是在子組件里watch并且deep監(jiān)聽(tīng),
然后我監(jiān)聽(tīng)到數(shù)據(jù)變化了以后在子組件里進(jìn)行賦值也還是不行。

父組件部分內(nèi)容:

<child :data="dataList"/>
data里邊:dataList: []
this.$http.get().then((res)=>{
    this.dataList.splice(0, this.dataList.length, ...res)
})

watch部分:

watch: {
    $route(to, from) {
        this.$http.get().then((res)=>{
            this.dataList.splice(0, this.dataList.length, ...res)
        })
    }
}

子組件部分內(nèi)容:

<div>{{ getData.name }}</div>
props: ['data']
data里邊:getData: this.data[0]
回答
編輯回答
孤毒

https://router.vuejs.org/zh/g...

watch: {
  // 如果路由有變化,會(huì)再次執(zhí)行該方法
  '$route': 'fetchData'
}
2018年6月16日 01:55
編輯回答
浪蕩不羈

從代碼看 你的route壓根就沒(méi)有變化呀 怎么會(huì)出發(fā)watch呢

試試將getData寫(xiě)成計(jì)算屬性

computed:{
  getData (){
    return this.data[0]
  }
}
2018年3月28日 17:48
編輯回答
葬愛(ài)

受邀來(lái)答。

路由參數(shù)變化但是頁(yè)面沒(méi)有刷新這是Vue的組件復(fù)用的默認(rèn)處理方式
文檔里面寫(xiě)了

不想復(fù)用的話,就在父組件的router-view上加個(gè)key
<router-view :key="$route.fullPath"></router-view>

2018年8月14日 22:42
編輯回答
心沉

是不是兩個(gè)路由用的是同一個(gè)組件,那就是不刷新的。

2017年6月25日 11:58
編輯回答
你的瞳

用vuex 吧,不然太麻煩了

2017年3月3日 09:14