vue3使用el-breadcrumb开发面包屑导航组件

<template>
    <el-breadcrumb class="app-breadcrumb" separator="/">
        <el-breadcrumb-item v-for="item in levelList" :key="item.path" :to="item.path">
            {{ item.meta.title }}
        </el-breadcrumb-item>
    </el-breadcrumb>
</template>

<script>
import {toRefs, reactive, onMounted, watch} from "vue";
import { useRoute } from 'vue-router'
import { useStore } from "vuex";

export default {
  setup() {
      const route = useRoute()
      let store = useStore();
      const state = reactive({
          levelList: []
      })
      watch(route, () => {
          getBreadcrumb()
      })
      onMounted(() => {
          getBreadcrumb()
      })
      const getBreadcrumb = () => {
          let arr = store.state.roles.map(item => item.resName)
          console.log(arr, '用户权限信息')
          let matched = route.matched.filter(item => item.meta && item.meta.title)
          const first = matched[0]
          console.log(matched)
          if (first && first.name.trim().toLocaleLowerCase() !== 'Dashboard'.toLocaleLowerCase()) {
              matched = [{ path: '/dashboard', meta: { title: '系统首页' }}, ...matched]
          }
          state.levelList = matched
      }
      return {
        ...toRefs(state),
          getBreadcrumb,
      }
  }
}
</script>

<style lang="scss" scoped>
.app-breadcrumb {
    margin: 8px 0 8px 8px;
    display: inline-block;
    line-height: 30px;
    .no-redirect {
        color: #97a8be;
        cursor: text;
    }
    ::v-deep .el-breadcrumb__inner {
        font-weight: normal;
    }
    ::v-deep .el-breadcrumb__item:last-child .el-breadcrumb__inner{
        font-weight: 700;
    }
}
</style>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值