Vue路由复用问题解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue路由复用问题解决相关的知识,希望对你有一定的参考价值。

参考技术A 方法一:
当一个页面跳转到相同页面时,就是页面的复用
路由参数参数变化,但是页面没有刷新,这是Vue的组件复用的默认处理方式

不想复用的话,就在父组件的router-view上加个key

方法二:
使用watch监听$route.path,只要有路由跳转就执行

方法三:
直接在跳转的页面中重新请求数据

vue路由改变了数据和内容不变的解决办法

参考技术A 场景:
1.路由改变了但是数据和内容没变,刷新后才变化
2.动态路由/cate/:id/index.html类似这样只改变id号的场景,由于router-view是复用的,单纯的改变id号并不会刷新router-view

解决办法有两种:【1】【2】

router-view组件复用与否的几种常见情况:
(1)不设置 router-view 的 key 属性
由于 Vue 会复用相同组件, 即 /page/1 跳转到 /page/2 或者 /page?id=1 跳转到 /page?id=2 这类链接跳转时, 将不在执行created, mounted之类的钩子, 只有beforeRouteUpdate钩子
(2)设置<router-view :key ="$route.path">
从/page/1 跳转到 /page/2, 由于这两个路由的$route.path不一样, 所以组件被强制不复用, 相关钩子加载顺序为:
beforeRouteUpdate => created => mounted
从/page?id=1跳转到 /page?id=2, 由于这两个路由的$route.path一样都是/page, 所以和没设置 key 属性一样, 会复用组件, 相关钩子加载顺序为:
beforeRouteUpdate
(3)设置<router-view :key ="$route.fullPath">
从/page/1跳转到/page/2, 由于这两个路由的$route.fullPath不一样, 所以组件被强制不复用, 相关钩子加载顺序为:
beforeRouteUpdate => created => mounted
从/page?id=1跳转到/page?id=2, 由于这两个路由的$route.fullPath也不一样, 所以组件被强制不复用, 相关钩子加载顺序为:
beforeRouteUpdate => created => mounted

以上是关于Vue路由复用问题解决的主要内容,如果未能解决你的问题,请参考以下文章

vue路由改变了数据和内容不变的解决办法

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

vue 路由缓存

vue-router复用组件时不刷新数据

vue-cli ——解决多次复用含有Echarts图表组件的问题

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