項目中經常會用到同一個頁面,結構是相同的,我只是在vue-router中通過添加參數的方式來區分狀態,參數可以在頁面跳轉時帶上params,或者query,但是有一個問題,即使我們修改了參數,URL也顯示已經改變,但頁面並不會刷新,因為路由是相同的,vue就會認為你是同一個頁面,從而復用已加載的頁面,而不會重新加載,所以如果在created鈎子中來區分狀態明顯是行不通的,可以通過watch監聽事件來監聽路由的變化:
watch: {
'$route' (to, from) {
if (to.name === 'projectAdd') {
console.log(to.query) // 在此調用函數
}
}
}
通過watch監聽即可實現,這里順帶說一下params和query的區別:
相同:
使用方法相同,都是在路由跳轉的時候帶過去:
manageProject (toseId) {
this.$router.push({
name: 'projectAdd',
query: {toseId: toseId} // params: {toseId: toseId}
})
}
不同:
params需要在路由設置index.js中添加參數(
path: '/projectAdd/:id'),而query不需要;
跳轉后在URL的顯示不同,params顯示的是(http://localhost:8082/#/projectAdd/6),query顯示的是(http://localhost:8082/#/projectAdd?toseId=6);
接收方式不同,params為this.$route.params,query為this.$route.query。
若有錯誤之處請指出,我會盡快改正,希望對你有幫助
