1. 程式人生 > 程式設計 >vue麵包屑元件的封裝方法

vue麵包屑元件的封裝方法

中自己封裝麵包屑元件,供大家參考,具體內容如下

要實現效果

vue麵包屑元件的封裝方法

前言

很多電商類產品都需要實現麵包屑導航,用來優化使用者體驗

一.初級麵包屑封裝元件

1.封裝基礎結構元件 Bread.vue

<template>
  <div class='xtx-bread'>
    <div class="xtx-bread-item">
      <RouterLink to="/">首頁</RouterLink>
    </div>
    <i class="iconfont icon-angle-right"></i>
    <div class="xt
x-bread-item"> <RouterLink to="/category/10000">二級級導航</RouterLink> </div> <i class="iconfont icon-angle-right"></i> <div class="xtx-bread-item"> <span>三級導航</span> </div> </div> </template> <style scoped lang='less'> .xtx-bread{ display: flex; padding: 25px 10px; &-item { a { color: #666; transition: all .4s; &:hover { color: @xtxColor; } } } i { font-size: 12px; margin-left: 5px; margin-right: 5px; line-height: 22px; } } </style>

2.定義 props 暴露 parentPath parentName 屬性,預設插槽,動態渲染元件

<div class='xtx-bread'>
     <div class="xtx-bread-item">
       <RouterLink to="/">首頁</RouterLink>
     </div>
     <i class="iconfont icon-angle-right"></i>
    <template v-if="parentName">
     <div class="xtx-bread-item"  v-if="parentName">
       <RouterLink  v-if="parentPath" to="/category/10000">{{parentName}}</RouterLink>
       &lwww.cppcns.com
t;span v-else>{{parentName}}</span> </div> </template> <i v-if="parentName" class="iconfont icon-angle-right"></i> <div class="xtx-bread-item"> <span> <slot/> </span> </div> </div> //用props接收資料 props: { parentName: { type: String,default: '' },parentPath: { type: String,default: '' } }

3.註冊元件,使用驗證效果

import Bread from './Bread'
export default {
  install (app)http://www.cppcns.com {
    // Vue2中,引數是Vue建構函式
    // Vue3中,引數是根元件的例項物件

    // 配置一個全域性元件
    app.component(Bread.name,Bread)
  }
}

4.使用元件

<Bread parentPath="/category/1005000" parentName="服飾">飛織系列</Bread>
<Bread parentName="服飾">飛織系列</Bread>  //parentPath去掉後不能實現跳轉

二、高階封裝 無限極導航

參考element-ui的麵包屑元件:

<el-breadcrumb separator="/">
  <el-breadcrumb-item :to="{ path: '/' }">首頁</el-breadcrumb-item>
  <el-breadcrumb-item><a href="/" rel="external nofollow" >活動管理</a></el-breadcrumb-item>
  <el-breadcrumb-item>活動列表</el-breadcrumb-item>
  <el-breadcrumb-item>活動詳情</el-breadcrumb-item>
</el-breadcrumb>

1.封裝基礎結構元件 BrendItem.vue

<template>
  <div class="xtx-bread-item">
    <RouterLink v-if="to" :to="to"><slot /></RouterLink>
    <span v-else><slot /></span>
    <i class="iconfont icon-angle-right"></i>
  </div>
</template>
<script>
export default {
  name: 'XtxBreadItem',props: {
    to: {
      type: [String,Object] //to的值即可以是字串,也可以是物件
    }
  }
}
</script>
//使用時
<bread-item to="/xxx/id"></bread-item>
<bread-item :to='{path:"/xxx/id"}'></bread-item>

2.封裝 Brend.vue

<template>
  <div class='xtx-bread'>
    <slot />
  </div>
</template>

<script>
export default {
  name: 'XtxBread'
}
</script>

<style scoped lang='less'>
.xtx-bread {
  display: flex;
  padding: 25px 10px;
  :deep(&-item) {
    a {
  www.cppcns.com    color: #666;
      transition: all 0.4s;
      &:hover {
        color: @xtxColor;
      }
    }
  }
  :deep(i) {
    font-size: 12px;
    margin-left: 5px;
    margin-right: 5px;
    line-height: 22px;
  }
}
</style>

3.註冊

import BreadItem  from './BreadItem'
import Bread  from './Bread'
export default {
  install (app) {
    // Vue2中,引數是Vue建構函式
    // Vue3中,引數是根元件的例項物件

    // 配置一個全域性元件
    app.component(Bread.name,Bread)
    app.component(BreadItem.name,BreadItem)
  }
}

4.使用

// 麵包屑
<Bread>
    <BreadItem to="/">首頁</XtxBreadItem>
    <BreadItem to="/category/1005000">服飾</XtxBreadItem>
    <BreadItem >飛織系列</XtxBreadItem>
</XtxBread>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。