Vue多个路由共用同一组件时,互相切换时更新组件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue多个路由共用同一组件时,互相切换时更新组件相关的知识,希望对你有一定的参考价值。

参考技术A 在Vue中切换路径时,如果下一个路由与当前页面共用同一个组件,Vue会复用当前组件,不会重新创建一个。这就导致组件的生命周期函数如mounted, created等不会被触发,页面看起来就像什么都没发生一样。
在vue-router 2.2版本之后,可以使用 beforeRouteUpdate 这个导航守卫来监听同一个路由更新参数时的情况,但这个守卫并不会在不同路由共用同一组件时触发。
举例来说,有下面这一组路由:

当从 /item/22/edit 切换到 /item/11/edit 时,会触发 beforeRouteUpdate 。
但如果从 /item/22/edit 切换到 /item/create 时,并不会触发 beforeRouteUpdate 。

如果上面两个状况都要监听到,可以选择监听 $route 参数,当url发生变化时,都会引起 $route 的改变,在监听函数里执行需要的操作。

当多个路由地址对应同一组件时,切换路由组件不刷新的问题

参考技术A 在vue官方文档中进行了如下描述:

解释一下:当我们使用 动态路由 或者在 路由上拼接参数 时,进行页面组件跳转,如果前后跳转都使用了同一个组件,这就导致我们后面的路由跳转会使用前一次组件实例,因此组件不会重新渲染加载

当我们想传递参数后,组件重新渲染组件实例,可以使用vue官方文档提供的方案:

如果我们对"路由变化作出响应是"==============> 刷新当前组件的话 :

可以使用: this.$router.go(0)  来刷新当前组件

以上是关于Vue多个路由共用同一组件时,互相切换时更新组件的主要内容,如果未能解决你的问题,请参考以下文章

当多个路由地址对应同一组件时,切换路由组件不刷新的问题

vue-router两个不同的路由共用一个component的问题

vue刷新当前路由:router-view 复用组件时不刷新的3种解决方案总结

vue: 关于多路由公用模板,导致组件内数组缓存问题

vue 跳转 同一路由不刷新问题解决

Vue:在同一组件的两个实例之间切换不会更新视图