vue-router的切换不同于传统的页面的切换。
路由之间的切换,其实就是组件之间的切换,不是真正的页面切换。
这也会导致一个问题,就是引用相同组件的时候,由于参数不一样不会覆盖原打开的页面而会打开一个重复的页面,只是页面的数据不一样,再点开旧的页面时(a)发现数据还是新页面(b)的数据,点开旧页面(a)时不会调用created(),mounted()函数,会导致获取数据的函数无法调用从而该组件无法更新。
A 页面中跳转的方法
this.$router.push({
path: "/detail",
query: { id: id}
});
解决办法:
在watch中监听路由变化,其中$route.query.id,id代表页面间传递的参数,fetchData代表调用的方法
B页面中数据刷新的方法
watch: {
"$route.query.id": "fetchData"
},
methods: {
fetchData() {
// 解决路由切换,页面不更新的实用方法
if (this.$route.path == "/detail") {
// 请求数据的方法
}
}
}