使用vue-router的页面跳转,并携带了参数过去,可是地址栏改变了,组件并未接收到组件,只有重新返回主页面触发才可以传递
应该是页面没用重新加载的问题
携带参数的路由如何重复加载,检测不到携带的参数改变
目的:每回点击,页面都会携带参数过去,并且页面重新加载接受到参数
从 (/home/type?id=日常趣事)导航到(/home/type?id=编程)时,相同的组件实例将被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会被调用。
要对同一个组件中参数的变化做出响应的话,使用 beforeRouteUpdate 导航守卫。
export default {
mounted(){
// 第一次创建组件,会执行mounted函数里的代码
},
beforeRouteUpdate(to, from) {
// 在同一个组件的不同路由间切换,会执行beforeRouteUpdate函数里的代码
console.log(to.query);
}
}
更改路由地址后刷新页面就可以了,用location.reload()或者this.$router.go(0),这两种相当于F5刷新页面
如果想页面不出现空白,可以用自定义事件,可以参考这个https://www.jianshu.com/p/139fedc59f0d
不行,可能是因为页面没有销毁的原因,就是浏览器地址栏变了,但页面没改变
到这里,我已经有很大的把握vue-router是通过我穿的path匹配对应的路由对象的
再次在Call Stack中寻找蛛丝马迹
看看我发现了什么!!
到这里我们可以看到VueRouter对象中的确有一个matcher,并且里面构造了Map,addRouteRecord函数太过冗杂这里就不贴出来了,有兴趣的小伙伴可以去GitHub上找到vue-router的源码自行查阅哦