解决element-plus的menu菜单组件无限极多次使用,切换一级菜单后无法高亮问题

1 页面结构


在这里插入图片描述
顶部为一级菜单,左侧为无限极二级菜单

问题:当切换一级菜单之后,菜单只有在刷新之后才能有高亮属性,检查获取到的route.path是没有问题的,就是渲染不上,所以把问题定位到父组件与 子组件的渲染和传值问题上,

解决思路

1、在子组件上加一个v-if控制`

<LeftBar v-if="show" :menuList="LeftBarMenu" />

2、监听父组件所传值的改变

  watch(
      () => state.LeftBarMenu,
      (newpath, oldpath) => {
        state.show = false
        nextTick().then(function() {
          // DOM 更新了
          state.show = true
        })
      }
    )

在dom更新之后在进行渲染

附上递归组件代码
	//#  父组件
    <el-menu
      :default-active="leftbarActiveIndex"
      router
      text-color="#333"
      @select="menuSelect"
    >
      <!-- 调用子组件,传入需要递归的数据 -->
      <Side :menuList="menuList"></Side>
    </el-menu>
	//#  子组件
    <!-- 递归子菜单 -->
    <template v-for="(item, index) of menuList" :key="index">
      <!-- 判断有无子组件,有的为submenu,且需要继续调用本组件 -->
      <el-submenu v-if="item.childList">
        <template #title>
          <i class="el-icon-s-promotion"></i>
          <span>{{ item.menuName }}</span>
        </template>
        <!-- 调用子组件,传入需要递归的数据 -->
        <Side :menuList="item.childList"></Side>
      </el-submenu>
      <!-- 没有子组件,直接渲染最后一级菜单 -->
      <el-menu-item v-else :index="item.url">
        <template #title>
          <i class="el-icon-platform-eleme"></i>
          <span>{{ item.menuName}} </span>
        </template>
      </el-menu-item>
      <!-- :index="item.itemPath" -->
    </template>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值