Vue监控路由的应用
问题来源:
我想要实现这样的一个功能,在同一个vue组件内,根据路由的不同分别呈现出首页banner或者是搜索功能
错误的解决办法
我最初希望单纯使用
data(){
return {
status:this.$route.query.status||0 //0表示在,1表示进行了初步的查询
}
},
当然了,这样只能在页面第一次刷新渲染时生成,随后当我们调用
methods:{
changeStatus(){
this.$router.push({path:"/",query:{status:1}})
}
}
的时候status的值并没有发生变化
我们应当主动监听路由的变化(事实上最终我细化了组件的粒度,将这两个功能拆分了)
使用watch
watch: {
$route: {
// val是改变之后的路由,oldVal是改变之前的val
handler: function(val, oldVal){
console.log(val);
},
// 深度观察监听
deep: true
}
}
如此一来,不仅可以获取到路由的属性的值,还可以通过对比新旧url来作出响应操作,比如进行前端监控判断用户操作。
本文介绍了在Vue应用中如何监控路由变化,以解决在同一个组件内根据路由呈现不同内容的问题。错误的方法是仅在初始化时获取路由信息,而正确的做法是利用`watch`对象监听路由变化,这允许在路由更新时做出响应,例如进行前端监控和用户操作判断。
1981

被折叠的 条评论
为什么被折叠?



