您现在的位置是:网站首页> 编程资料编程资料

关于antd-vue a-menu菜单绑定路由的相关问题_vue.js_

2023-05-24 334人已围观

简介 关于antd-vue a-menu菜单绑定路由的相关问题_vue.js_

tips: 路由绑定、菜单跳转、网页后退高亮显示

1. 问题描述

使用antd-vue 的 a-layout布局和a-menu菜单做一个侧边栏菜单,加入vuex配置侧边栏点击事件,实现点击菜单改变路由展示中间部分内容的功能

但是出现了问题:

  • 重复点击路由报错
  • 浏览器刷新/后退 菜单高亮区域没有根据路由的变化产生变化

2. 解决方法

  • 对路由变化进行判断/修改router 的push与replace方法
  • 借助a-menu 的属性::selectedKeys绑定路由地址,就能实现随着路由产生变化

3. 代码

****** 重复点击报错解决:******

方法1:对路径进行判断

methods: {     handelClick(item) {       //判断点击路径与点击菜单路径是否不同       //有效避免重复替换相同路径       if (item.key !== this.$route.path) {         this.$router.push(item.key)         console.log(this.$route.path)         console.log(item)       }     }   }

方法2:在main.js中添加代码

import VueRouter from 'vue-router' Vue.use(VueRouter)   const originalReplace = VueRouter.prototype.replace; VueRouter.prototype.replace = function replace(location) {     return originalReplace.call(this, location).catch(err => err); }; const originalPush = VueRouter.prototype.push VueRouter.prototype.push = function push(location) {     return originalPush.call(this, location).catch(err => err) } ****** 浏览器刷新/后退 菜单高亮区域:******

完整代码:

关键代码: 

                                 注册            /** *在a-menu中设置的:selectedKeys="key",绑定当前的路由"[$route.path]" *所以在a-menu-item的key需要做出改变,改为路径 *同时也方便了后续处理点击事件传入的路径 */

顺便说下菜单的点击事件:

上面好像说了

演示结果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

-六神源码网