今天在使用elementui的 Tree组件时遇到了这样一个bug,我服务器点击路由跳转携带参数到新页面,但是created方法只在第一次进来的时候运行,除了第一次,其他都不执行,本地点击每次都会执行created方法,自己研究了一下
产生原因
vue-router的切换不同于传统的页面的切换,路由之间的切换,其实就是组件之间的切换,不是真正的页面切换,这也会导致一个问题,就是引用相同组件的时候,由于参数不一样不会覆盖原打开的页面而会打开一个重复的页面,只是页面的数据不一样
解决方法
- 在watch中设置路由通过监听
$route.query.id这个参数
watch: {
'$route.query.id' (to, from) { //监听路由是否变化
if(this.$route.path == '/offer/configUpdate'){//仅在当前页面生效
if(to != from){
//要加载的数据
}
}
}
}
- 使用activated()方法
activated(){
//要加载的数据
}