最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3使用element-plus再次封裝table組件的基本步驟

 更新時間:2024年03月22日 10:14:04   作者:Software攻城獅  
這篇文章主要介紹了vue3使用element-plus再次封裝table組件的基本步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

vue3 使用element-plus 如何再次封裝table組件

基本步驟

  • 創(chuàng)建子組件
  • 默認(rèn)數(shù)據(jù)配置
  • 在需要使用自定義 Table 組件的地方引入并使用:

創(chuàng)建子組件:

創(chuàng)建一個新的 .vue 文件,例如子組件 baseTable.vue,作為你封裝后的 Table 組件。

 <template>
    <div class="base-table-wrapper">
        <el-table :data="tableData" style="width: 100%">
            <template v-for="item in column" :key="item.prop">
                <el-table-column :prop="item.prop" :label="item.label" :width="item.width">
                    <template #default="scope" v-if="!!item.isScope">
                        <slot :name="item.prop+'ScopeContent'" :row="scope.row" />
                    </template> 
                </el-table-column>
            </template>
        </el-table>
    </div>
</template>

<script setup>

const props = defineProps({
    column: {
        type: Array,
        default() {
            return []
        }
    },
    tableData: {
        type: Array,
        default() {
            return []
        }
    },
})

</script>

<style lang="scss" scoped></style>

在需要使用自定義 Table 組件的地方引入并使用:

<template>
<base-table :column="tableColumn" :tableData="recordList"> 
    <!-- 刷卡時間自定義內(nèi)容 -->
    <template #createTimeScopeContent="slotProps" > 
        <span>{{ parseTime(slotProps.row.eventTime) }}</span>
    </template> 
    <!-- // 刷卡時間自定義內(nèi)容 -->

    <!-- 事件自定義內(nèi)容 -->
    <template #typeScopeContent="slotProps" >  
        <dict-tag :options="entrance_type" :value="slotProps.row.event" />
    </template>
    <!-- // 事件自定義內(nèi)容 --> 


    <!-- 部門自定義內(nèi)容 -->
    <template #deptNameScopeContent="slotProps" >  
        <span>{{ slotProps.row.deptName || "無" }}</span> 
    </template>
    <!-- // 部門自定義內(nèi)容 -->  

    <!-- 刷卡地點自定義內(nèi)容 -->
    <template #controllerNameScopeContent="slotProps" > 
        <dict-tag :options="controller_name" :value="slotProps.row.controllerName" />
    </template>
    <!-- // 刷卡地點自定義內(nèi)容 --> 
</base-table> 
</template>

<script setup>
const tableColumn = ref([
   {
      label: "刷卡時間",
      prop: "createTime",
      width: "180",
      align: "center",
      isScope: true
   }, {
      label: "事件",
      prop: "type",
      width: "auto",
      align: "center",
      isScope: true
   }, {
      label: "姓名",
      prop: "staffName",
      width: "auto",
      align: "center"
   }, {
      label: "卡號",
      prop: "cardNo",
      width: "auto",
      align: "center"
   }, {
      label: "部門",
      prop: "deptName",
      width: "auto",
      align: "center",
      isScope: true
   }, {
      label: "刷卡地點",
      prop: "controllerName",
      width: "auto",
      align: "center",
      isScope: true
   }
])
</script>

在 Vue 3 中,你可能會遇到“具名插槽”(Named Slots)的概念,它允許你在組件內(nèi)部定義特定的插槽位置,并在父組件中為這些具名插槽提供內(nèi)容。

以下是如何在Vue 3中使用具名插槽的一個基本示例:

  • 首先,在子組件(ChildComponent.vue)中定義一個具名插槽:
<template>
  <div>
    <h2>這是子組件的標(biāo)題</h2>
    <slot name="description">默認(rèn)描述內(nèi)容</slot>
    <slot name="footer">默認(rèn)頁腳內(nèi)容</slot>
  </div>
</template>

在這個例子中,我們定義了兩個具名插槽:description 和 footer,并且都提供了默認(rèn)內(nèi)容。

  • 然后,在父組件中使用這個子組件并填充具名插槽:
<template>
  <ChildComponent>
    <template v-slot:description>
      <p>這是來自父組件的描述內(nèi)容</p>
    </template>
    
    <template v-slot:footer>
      <p>這是來自父組件的頁腳內(nèi)容</p>
    </template>
  </ChildComponent>
</template>

在父組件中,我們使用 v-slot 指令(也可以簡寫為 #)來指定要填充哪個具名插槽,并在其中提供相應(yīng)的內(nèi)容。這樣,當(dāng)渲染子組件時,就會在對應(yīng)的位置插入這些內(nèi)容。

vue3 使用具名插槽并且傳遞值

在 Vue 3 中,具名插槽不僅可以用于傳遞 HTML 結(jié)構(gòu),還可以配合作用域插槽(Scoped Slots)來傳遞數(shù)據(jù)。作用域插槽允許子組件向其插槽內(nèi)傳遞數(shù)據(jù),而父組件則可以通過插槽提供的回調(diào)函數(shù)來訪問這些數(shù)據(jù)并在插槽內(nèi)進(jìn)行渲染。

下面是一個使用 Vue 3 中具名插槽結(jié)合作用域插槽傳遞值的例子:

子組件 (ChildComponent.vue):

<template>
  <div>
    <h2>這是子組件的數(shù)據(jù)列表</h2>
    <!-- 定義作用域插槽,傳入一個數(shù)組 -->
    <ul>
      <li v-for="item in items" :key="item.id">
        <slot :item="item" name="listItem"></slot>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: '第一條數(shù)據(jù)' },
        { id: 2, text: '第二條數(shù)據(jù)' },
        // ...
      ]
    }
  }
}
</script>

父組件:

<template>
  <ChildComponent>
    <!-- 使用 v-slot 指令接收子組件傳遞的 item 數(shù)據(jù) -->
    <template #listItem="slotProps">
      <div>
        <p>ID: {{ slotProps.item.id }}</p>
        <p>內(nèi)容: {{ slotProps.item.text }}</p>
        <!-- 這里可以根據(jù) item 數(shù)據(jù)自定義渲染內(nèi)容 -->
      </div>
    </template>
  </ChildComponent>
</template>

在上述例子中,子組件 ChildComponent 定義了一個具名插槽 listItem 并且每個插槽都綁定了一個 item 數(shù)據(jù)。

在父組件中,我們通過 v-slot:listItem=“slotProps” 來接收這些數(shù)據(jù),并通過 slotProps.item 訪問具體的 item 對象屬性。這樣父組件就可以根據(jù)傳遞過來的數(shù)據(jù)自行決定如何渲染每一項列表內(nèi)容了。

以上就是vue3使用element-plus再次封裝table組件的基本步驟的詳細(xì)內(nèi)容,更多關(guān)于vue3 element-plus再次封裝table的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • el-table表格動態(tài)合并相同數(shù)據(jù)單元格(可指定列+自定義合并)

    el-table表格動態(tài)合并相同數(shù)據(jù)單元格(可指定列+自定義合并)

    工作時遇到的el-table合并單元格的需求,本文主要介紹了el-table表格動態(tài)合并相同數(shù)據(jù)單元格(可指定列+自定義合并),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 關(guān)于Vue-extend和VueComponent問題小結(jié)

    關(guān)于Vue-extend和VueComponent問題小結(jié)

    這篇文章主要介紹了Vue-extend和VueComponent問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 一文詳細(xì)介紹vue的遞歸組件(推薦)

    一文詳細(xì)介紹vue的遞歸組件(推薦)

    這篇文章主要介紹了vue遞歸組件的相關(guān)資料,遞歸組件是Vue.js中用于渲染層級結(jié)構(gòu)的強(qiáng)大工具,通過組件調(diào)用自身來簡化復(fù)雜數(shù)據(jù)的渲染,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • Vue實現(xiàn)簡單購物車功能

    Vue實現(xiàn)簡單購物車功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)簡單購物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Vue?cli3?chainWepack使用方法示例詳解

    Vue?cli3?chainWepack使用方法示例詳解

    這篇文章主要為大家介紹了Vue?cli3?chainWepack使用方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • vue如何給組件動態(tài)綁定不同的事件

    vue如何給組件動態(tài)綁定不同的事件

    這篇文章主要介紹了vue如何給組件動態(tài)綁定不同的事件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue實現(xiàn)價格日歷效果

    vue實現(xiàn)價格日歷效果

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)價格日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • vue-cli2與vue-cli3在一臺電腦共存的實現(xiàn)方法

    vue-cli2與vue-cli3在一臺電腦共存的實現(xiàn)方法

    這篇文章主要介紹了vue-cli2與vue-cli3在一臺電腦共存的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue.js每天必學(xué)之計算屬性computed與$watch

    Vue.js每天必學(xué)之計算屬性computed與$watch

    Vue.js每天必學(xué)之計算屬性computed與$watch,為大家詳細(xì)講解計算屬性computed與$watch,感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue實現(xiàn)帶縮略圖的輪播圖效果

    vue實現(xiàn)帶縮略圖的輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了如何使用vue實現(xiàn)帶縮略圖的輪播圖效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的可以參考下
    2024-02-02

最新評論

沈丘县| 瑞丽市| 宁陵县| 株洲县| 荣昌县| 西盟| 亳州市| 盐城市| 阜新| 同江市| 革吉县| 绵竹市| 宁河县| 德兴市| 琼结县| 南和县| 宜昌市| 洛扎县| 甘洛县| 运城市| 北川| 汶上县| 封开县| 德格县| 和平县| 竹山县| 海安县| 兴城市| 无为县| 页游| 双牌县| 涟源市| 保德县| 景泰县| 盱眙县| 离岛区| 桂阳县| 安西县| 德格县| 克东县| 仁怀市|