【vue-router】动态组件中通过路由参数来多次调用同一个页面中遇到的坑
vue2 router的几个坑总结
需求:vue2 动态路由中不同菜单目录引用同一个组件页面,通过给接口传入不同的参数来区分页面。
vue通过切换路由如果仅仅query或者params参数发生变化,这时候能看到地址栏的url地址确实发生了变化,但是页面数据就是没刷新。
// query参数
http://localhost:8080/index?type=1
http://localhost:8080/index?type=2
// params参数
http://localhost:8080/index/1
http://localhost:8080/index/2
这时候页面需要手动监听路由变化,手动刷新(注意这种方法刷新的是整个页面),并且这种方法和我的需求不相关
watch: {
'$route' (to, from){
this.$router.go(0);
}
},
但是我的需要是,在动态路由里根据不同路由参数,在不同菜单目录里引用同一个页面,所以我需要写成下面这种形式,页面内容的确变化了。
watch: {
$route:{
immediate:true,
handler(){
// 写入需要监听路由便后后的逻辑
}
},
},
不同菜单页面没有
- 如果采用上面第一个刷新路由的方法会全屏刷新,显然这样写在实际开发中肯定是不行的。
- 使用第二种方法页面内容确实改变当前路由页面,但是由于我在不同菜单目录里引用同一个页面。vue路由认为当前同一个页面不会进行页面刷新,router-view不会按照新页面来切换,只需要给router-view绑定一个唯一的key就行了,这里正好可以通过不同路径来区分。
<router-view :key='$route.fullPath'>
洗尽铅华始见金,褪去浮华归本真
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类