vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失

本文知识点比较简单,主要面向新人解惑,vue前辈请忽略。

 

 

我们需要实现的效果,父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失,见下图:

在实际开发中,可能遇到了当前路由下(父路由)在点击它的子路由时,他的(父路由)选中状态消失了

原因:

1、子路由router-link加了exac精确匹配路由

2、在写路由的时候,父子路由没有严格按照一级/二级来写

 

知识点

router-link 作为 vue 中的路由跳转标签,它内置有一个选中的状态,当处于当前路由时,会给 router-link 加一个 router-active-class,即选中状态的 class,同时还提供有一个 exact 属性,当加了 exact 属性的时候表示精确匹配,也就是会精确匹配 Url,所以如果给主路由设置了 exact 属性的话,当处于子路由时,Url 就匹配不到主路由了,那么主路由也就不会处于选中状态。  如果想了解更多,请阅读:《vue路由(router)关于linkExactActiveClass和linkExactActiveClass问题》

所以解决办法就是不要在主路由和子路由的 router-link 上设置 exact 属性,问题即可解决。

 

下面是具体配置:

组件配置:

<nav>
      <ul class="ul">
        <li>
          <router-link to="/brand"><span>汐熙·故事</span></router-link>
          <dl class="dl">
            <dd><router-link to="/brand/company"><span>企业介绍</span></router-link></dd>
            <dd><router-link to="/brand/story"><span>品牌故事</span></router-link></dd>
            <dd><router-link to="/brand/productconcept"><span>产品理念</span></router-link></dd>
          </dl>
        </li>
        ...
      </ul>
    </nav>

注意:
主路由是:/brand ,子路由都要加上主路由, 且不要加"exac" 

 

路由配置:

export default new Router({
  routes: [
    //汐熙·故事
    {
      path: "/brand", //主路由
      name: "brand",
      redirect: "/brand/company",  //重定向到第一个子路由
      components: {
        ...
      },
      children: [
        {
          path: "/brand/company", //加主路由
          name: "company",
          components: {
            ...
          }
        },
        {
          path: "/brand/story", //加主路由
          name: "story",
          components: {
            ...
          }
        }
        ...
      ]
    }
  ]
});

注意:
主路由使用"redirect"重定向到第一个子路由,实现点击父级进入第一个子路由;
所有子路由都要加上主路由

 

以上内容如有错误,请各位朋友指正,谢谢。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值