ant-vue之导航跳转(非点击导航事件)动态监听路由变化
在做导航时,vue-ant 导航点击事件框架交互是根据selected=['navitem']来进行的
绑定的selected每次点击更改navitem值即可,但是如果出现手动输入路径和在其它页面点击返回,路径变了,导航的事件和默认是不会发生变化的
开始考虑selected是数组,怀疑是因为数组操作数据不刷新,用this.$set
后来用computed接管 :selected=computedSelect => 内部用状态管理接管 => return this.$store.state.selected 然后用state 的mutation 方法全局改变(哪个页面用到哪个页面提交)
store.js const _this = new Vue() mutations: { fnselectedKeys(state,newNavStr){//更改selectedKeys state.selectedKeys =[] // state.selectedKeys[0] = newNavStr _this.$set(state.selectedKeys,0,newNavStr) // console.log(_this.$set) },}
nav.js
// selectedKeys(){//data内的数据不会自动更新 // return this.$store.state.selectedKeys // }
user.js
//
navSelect(nav){
this.$store.commit('fnselectedKeys',nav)}
后来发现vue不会动态获取到route.path
绕了一圈直接简化了方式:
1.写一个方法(也可以省略用路由名动态绑定路径更简洁):
2:监听路由的路径(不管手动输入还是返回还是其它页面的事件内跳转):只要有改变就会跳转并更改事件默认selected值
watch: {//动态监听路由变化 -以便动态更改导航背景色事件效果等 '$route' (to, from) { // 对路由变化作出响应... console.log('to.path----',to.path)//跳转后路由 console.log('from----',from)//跳转前路由 this.navSelect(to.path) } },
<a-menu-item key="/Account" @click='navSelect("/Account")'> <router-link to="/Account"> <a-icon type="reconciliation" /> <span>系统管理</span> </router-link> </a-menu-item> 事件: //导航点击 navSelect(nav){ this.$set(this.selectedKeys,0,nav) // this.$store.commit('fnselectedKeys',nav) // this.selectedKeys[0] = nav },
如果想要胜率第一步:
直接在key="路由路径" 基础上 添加监听路由即可,路由监听触发事件为重新赋值key即可
//wacth内:
this.selectedKeys = [] this.selectedKeys.push('
to.path
')
另外还有个小细节要注意:
如果在开发中经常保存自动刷新页面,导航默认选中背景色会出错,回到首页-实际页面不在首页,导致这个原因是watch并没有监测到路由发生变化了,路由沿用了mounted初始化时的首页,这时候只要在mounted挂载时初始化一次即可,(后面再刷新也不会再出现这种情况)
methods:{ initNavbar(){//初始化如果手动输入路由,其它路径事件对应到指定路由导航事件 var initRouterPath = this.$route.path this.navSelect(initRouterPath) } } mounted(){ this.initNavbar() }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!