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

遇到这样一个场景,即两个不同的路由,使用同一个组件,但是切换路由时无法触发mounted方法

如图

image.png
image.png
image.png

在路由中引用的相同组件

这时会遇到mounted无法触发的问题

遇到这种问题有以下两种方法

1. watch $route

在页面中watch $route来实现

watch: {
  '$route': function() {
    console.log(this.$route)
  }
}

但是这里有一个问题,就是页面第一次加载的时候,还是会触发mounted, 所以如果有在页面渲染时触发的逻辑,这里需要特殊处理一下

2. 设置 router-view 的 key 属性值为 $route.fullPath

<router-view :key="$route.fullPath"/>
image.png

设置key为$route.fullPath之后,由于两个路由的fullPath不同,组件会被强制不复用,所以将会回到正常流程,切换路由时mounted会被触发

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容