Advertisement

【vue3】路由菜单激活

阅读量:


目标:

点击左侧菜单,对应的菜单就激活,右侧就显示对应的路由页面

路由配置

复制代码
   // 个人中心布局页

    
   {
    
     path: '/member',
    
     component: MemberLayout,
    
     children: [
    
       { path: '/member', component: MemberHome }, // 个人中心页
    
       { path: '/member/order', component: MemberOrder }, // 个人中心-我的订单
    
       { path: '/member/order/:id', component: MemberOrderDetail }// 个人中心-我的订单-详情页
    
     ]
    
   }
    
    
    
    

router-link 默认情况下的路由是模糊匹配,

  • active-class 如果是to="/article",例如当前路径是 /article/1 那么也会激活
  • exact-active-class 这个 router-link 只有在当前路由被全包含匹配时才会被激活,当用户访问 /article/1 时
复制代码
   <!-- <a href="javascript:;">个人中心</a> -->

    
       <RouterLink to="/member" exact-active-class="active">个人中心</RouterLink>
    
  
    
     <!-- <a href="javascript:;">我的订单</a> -->
    
       <RouterLink to="/member/order" exact-active-class="active">我的订单</RouterLink>
    
    
    
    

此时就能实现 点击那个菜单就激活哪个

但是 如果我的订单菜单里还有子路由页面

复制代码
   <div class="">我的订单

    
     <router-link to="/member/order/1001">订单1</router-link>
    
     <router-link to="/member/order/1002">订单2</router-link>
    
   </div>
    
    
    
    

想要点击子路由 我的订单也会被激活,是不是把 我的订单改成模糊匹配就可以?

复制代码
   <!-- <a href="javascript:;">个人中心</a> -->

    
       <RouterLink to="/member" exact-active-class="active">个人中心</RouterLink>
    
  
    
     <!-- <a href="javascript:;">我的订单</a> -->
    
       <RouterLink to="/member/order"  active-class="active">我的订单</RouterLink>
    
    
    
    

发现还是没有用,

但是对于vue2肯定是管用的,vue3就不好用,vue3里对这个进行了修改

vue2写法

vue3写法

复制代码
   // 个人中心布局页

    
   {
    
     path: '/member',
    
     component: MemberLayout,
    
     children: [
    
       { path: '/member', component: MemberHome }, // 个人中心页
    
       // { path: '/member/order', component: MemberOrder }, // 个人中心-我的订单
    
       // { path: '/member/order/:id', component: MemberOrderDetail }// 个人中心-我的订单-详情页
    
       {
    
     // vue3.0 需要有嵌套关系才能模糊匹配
    
     path: '/member/order', // 改造我的订单的路由
    
     component: { render: () => h(<RouterView/>) }, // 创建RouterView标签
    
     children: [
    
       { path: '', component: MemberOrder }, // 我的订单页 /member/order
    
       { path: ':id', component: MemberOrderDetail }// 我的订单详情页 /member/order/:id
    
     ]
    
       }
    
     ]
    
   }
    
    
    
    
复制代码
   <!-- <a href="javascript:;">个人中心</a> -->

    
       <RouterLink to="/member" exact-active-class="active">个人中心</RouterLink>
    
  
    
     <!-- <a href="javascript:;">我的订单</a> -->
    
       <RouterLink to="/member/order"  active-class="active">我的订单</RouterLink>
    
    
    
    

此时点击订单1 订单2,左侧我的订单 也会被激活

全部评论 (0)

还没有任何评论哟~