vue爬坑记:全局面包屑组件

vuex文件夹下的代码

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const state = {
  smallPage: true, // 菜单是否显示
  breadcumb: {}// 面包屑
}
const mutations = {
  changePage (state, value) {
    state.smallPage = value
  },
  changeBreadcumb (state, value) {
    state.breadcumb = value
  }
}
export default new Vuex.Store({
  state,
  mutations
})
  • 全局组件(src/config/components.js)
import kmBreadcrumb from '../components/config/kmBreadcrumb'
export default (Vue) => {
  Vue.component('km-breadcrumb', kmBreadcrumb)
}

  • 面包屑组件(src/components/config/kmBreadcrumb.vue)
<template>
  <div class="breadcumb">
    <div class="breadcumb-list">
      <div v-for="(item, i) in breadcumb.list" :key="i" class="breadcumb-link" :class="{last: i == breadcumb.list.length -1}">
        <router-link :to="{path: item.path}">{{item.name}}</router-link>
        <span v-if="i < breadcumb.list.length - 1"> ></span>
      </div>
      
    </div>
    <span class="breadcumb-title">
      {{breadcumb.active}}
    </span>
  </div>
</template>
<script>
export default{
  data(){
    return {
    }
  },
  props:{
    breadcumb:{
      type: Object
    }
  }
}
</script>
<style lang="scss" scoped>
@import '~css/var.scss';
.breadcumb{
  height: .6rem;
  line-height: .6rem;
  padding: 0 .4rem;
  overflow: hidden;
  .breadcumb-title{
    float: left;
    font-size: .16rem;
    color: #333;
  }
  .breadcumb-list {
    float: right;
    .breadcumb-link{
      display: inline;
      a{
        color: #666;
        font-size: .12rem;
      }
      span{
        padding: 0 .05rem;
      }
      &.last{
        a{
          color: $font-active
        }
      }
    }
  }
}
</style>

  • 需要放置面包屑导航的页面(src/components/products/index.vue)
<template>
  <div class="index">

  </div>
</template>
<script>

export default{
  data(){
    return {}
  },
  created() {
    this.$store.commit('changeBreadcumb', {
      active: '产品管理',
      list: [
        {name: "首页", path: "/home/index"},
        {name: "产品管理", path: ""}
      ]
    })
  }
}
</script>
<style lang="scss" scoped>

</style>

- hom.vue (文件路径:src/components/home.vue)


原则是:代码复用,减少DOM元素的书写量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值