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。

推薦閱讀: