更新:11-29
時隔半年,又重新使用VUE進行開發,有了新方案——beforeRouteLeave
在組件內直接使用,前提是你用了vue-router:
beforeRouteLeave (to, from, next) {
// 導航離開該組件的對應路由時調用
// 可以訪問組件實例 `this`
}
完.....
問題背景:
點擊用戶頭像 => 進入用戶個人中心,在用戶個人中心里點擊其他用戶的頭像,我希望顯示被點擊用戶的個人中心,但只看到了路由參數在發生變化,頁面內容並沒有更新。如圖:

頁面代碼如下:
<script>
export default {
data() {
return {
data: {}
}
},
methods: {
fetchDate() {
// 使用 axios獲取數據
......
},
created() {
this.fetchDate();
}
}
</script>
解決辦法:
使用 watch,觀察路由,一旦發生變化便重新獲取數據!
<script>
export default {
data() {
return {
data: {}
}
},
methods: {
fetchDate() {
// 使用 axios獲取數據
......
},
created() {
// 組件創建完后獲取數據,
// 此時 data 已經被 observed 了
this.fetchDate();
},
watch: {
// 如果路由有變化,會再次執行該方法
"$route": "fetchDate"
}
}
</script>

