vue如何使用vue slot封裝公共組件
使用vue slot封裝公共組件
公用子組件:publicSlot
<div> <div class="top"> <h1 class="title">{{title}}</h1> <slot name="headerRight"> 可以根據你slot name屬性選擇插槽的位置</slot> </div> <slot> 這裡相當於留個位置,接收父組件傳入的內容</slot> </div>
export default { props: { title: { type: String } }, }
父組件:
<!-- 方式審核 --> <publicSlot :title="title"> <div class="main_box"> //這裡可以寫父組件自定義頁面的內容 <el-form :model="formDatas" label-width="120px"> <el-row> <el-col :span="11"> <el-form-item label="選擇區域:"> <el-select v-model="formDatas.region"> <el-option label="區域一" value="shanghai"></el-option> <el-option label="區域二" value="beijing"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label="輸入框:"> <el-input type="textarea" v-model="textarea" > </el-input> </el-form-item> </el-col> </el-row> </el-form> </div> //這裡是插入瞭一個按鈕 <div slot="headerRight"> <el-button type="text">操作按鈕</el-button> </div> </publicSlot>
import publicSlot from '../public/components/publicSlot.vue' export default { publicSlot }
vue slot:
vue 插槽:
Vue 實現瞭一套內容分發的 API,這套 API 的設計靈感源自 Web Components 規范草案,將 元素作為承載分發內容的出口。
- 具名插槽
- 作用域插槽
- 動態插槽
使用slot插槽封裝
1.封裝頭部組件
<template> <div class="head_container"> <slot name="left"></slot> <div> <span>{{ title }}</span> </div> <slot name="right"></slot> </div> </template>
export default { name: "homeTop", //定義props的title屬性 props: { title: String, }, }
2.在main.js中全局導出組件
import HeadTop from './views/HeadTop.vue' Vue.component('HeadTop', HeadTop)
3.當你要使用組件的時候 如果隻要中間的title ,那麼solt插槽就不要使用
<HeadTop title="我的"></HeadTop>
4.如果左右兩邊都需要加東西,那麼就使用插槽,因為在之前定義瞭插槽的名字,所以調用的時候需要指定插槽的name,判斷你是加在哪裡
<HeadTop :title="address.name"> <div class="icon" slot="left"> <i class="el-icon-search"></i> </div> <div class="login" slot="right" @click="goToLogin"> <span>登錄</span>/ <span>註冊</span> </div> </HeadTop>
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- vue和iview結合動態生成表單實例
- 總結Vue Element UI使用中遇到的問題
- Vue Element前端應用開發之常規Element界面組件
- 前端vue2 element ui高效配置化省時又省力
- vue 動態添加el-input的實現邏輯