vue使用element-ui,页面刷新,导航栏跳转问题(解决)

本文介绍了在Vue项目中使用Element-UI时遇到的页面刷新导致导航栏变化的问题及其解决方案。通过设置默认选中并结合计算属性与路由,解决了纵向和横向导航在刷新页面后的跳转问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

产生的原因

原因是在使用组件时,设置了默认选中,因此页面刷新,导航发生了变化,而路由及页面并未改变

:default-active="activeIndex"
 data() {
      return {
        activeIndex: '1',
      };
    },

解决办法

第一步,同样还是要使用默认选中

:default-active="leftNavActive"//这个leftNavActive变量并不在data当中

第二步,使用计算属性,配合路由使用,这一步解决纵向导航栏的问题

  computed: {
            leftNavActive: {
                get: function () {
                    let arr = this.$route.path.split('/');
                    switch (arr[3]) {
                        case 'PurchaseOrder':
                            return '/Main/Order'
                        case 'ReturnsOrder':
                            return '/Main/Order'
                        case 'StatisticDelivery':
                            return '/Main/Order'
                        case 'StatisticOrder':
                            return '/Main/Order'
                        case 'GoodsList':
                            return '/Main/Goods'
                        case 'GoodsCollection':
                            return '/Main/Goods'
                        case 'GoodsCart':
                            return '/Main/Goods'
                        case 'CapitalAccount':
                            return '/Main/Money'
                        case 'PaymentDetails':
                            return '/Main/Money'
                    }
                }
            },
            set: function () {
            }

        },

第三步,使用计算属性,解决横向导航的问题,方法与前面类似

   computed: {
            ActiveIndex: {
                get: function () {
                    return this.$route.path;
                },
                set: function () {
                }
            },
        }

路由代码,仅供参考

   {
        path: '/Main/Order',
        name:'Order',
        component: ()=>import('../components/public/OrderNav.vue'),
        meta: {
          isLogin: true,
          roles: ['admin'],
        },
        children:[
          {
            path: '/Main/Order',
            redirect: '/Main/Order/PurchaseOrder',
          },
          {
            path: '/Main/Order/PurchaseOrder',
            name: 'PurchaseOrder',
            component: ()=>import('../views/order/PurchaseOrder.vue'),
            meta: {
              isLogin: true,
              roles: ['admin'],
            },
          },
          {
            path: '/Main/Order/ReturnsOrder',
            name: 'ReturnsOrder',
            component: ()=>import('../views/order/ReturnsOrder.vue'),
            meta: {
              isLogin: true,
              roles: ['admin'],
            },
          },
          {
            path: '/Main/Order/StatisticDelivery',
            name: 'StatisticDelivery',
            component: ()=>import('../views/order/StatisticDelivery.vue'),
            meta: {
              isLogin: true,
              roles: ['admin'],
            },
          },
          {
            path: '/Main/Order/StatisticOrder',
            name: 'StatisticOrder',
            component: ()=>import('../views/order/StatisticOrder.vue'),
            meta: {
              isLogin: true,
              roles: ['admin'],
            },
          },
        ]
      },

效果图
在这里插入图片描述
如果对面包屑感兴趣可以去看另一篇文章vue使用element-ui,动态渲染导航栏和面包屑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值