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

Vue3中Slot插槽透?jìng)?二次封裝Arco的table組件詳解

 更新時(shí)間:2025年04月18日 14:22:42   作者:西魏陶淵明  
這篇文章主要介紹了Vue3中Slot插槽透?jìng)?二次封裝Arco的table組件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Vue3中Slot插槽透?jìng)?二次封裝Arco的table組件

Vue3 插槽透?jìng)?/h3>

需求是這樣, 對(duì)acro的table表格進(jìn)行二次封裝。

封裝成一個(gè) <SearchTable> 組件。要求二次封裝的組件可以將slot透?jìng)鹘o原生的table組件。

如下這樣,將SearchTable中的插槽透?jìng)鹘o <a-table>

      <SearchTable
        :search-model="searchModel"
        :table-cols="cols"
        :table-data="tableData"
        :pagination="pagination"
        @search="searchTableAction"
      >
        <template #channelCode="{ record, rowIndex, column }">
          {{ record }} - {{ rowIndex }} - {{ column }}
        </template>
        <template #channelName="{ record, rowIndex, column }">
          {{ record }} - {{ rowIndex }}- {{ column }}
        </template>
        <template #status="{ record, rowIndex, column }">
          {{ record }} - {{ rowIndex }}- {{ column }}
        </template>
      </SearchTable>

一共有下面幾個(gè)字段:

 const cols = [
    {
      title: '渠道編碼',
      dataIndex: 'channelCode',
      slotName: 'channelCode',
    },
    {
      title: '渠道名稱(chēng)',
      dataIndex: 'channelName',
      slotName: 'channelName',
    },
    {
      title: '狀態(tài)',
      dataIndex: 'status',
      slotName: 'status',
    },
  ];

步驟

首先我們先明白原組件的使用。

arco 中的table組件, 當(dāng)定義了插槽就渲染插槽。當(dāng)沒(méi)有定義的時(shí)候就正常顯示table表格中的數(shù)據(jù)。

因?yàn)槲覀円獙?duì)table組件進(jìn)行二次封裝,所以我們要將table中的插槽透?jìng)鞒鋈?。下面是?shí)現(xiàn)原理。

1. 知道父組件傳遞了一個(gè)slot

這里我們要用一個(gè)vue3中的API,useSlots(), 我們要用這個(gè)api來(lái)判斷父組件是否傳遞了插槽。

  • 從slots中獲取父組件傳的插槽信息,如果沒(méi)有則就使用 arco 中默認(rèn)的。即正常展示。當(dāng)自定義了插槽, 就選擇插槽的內(nèi)容。
  • 插槽的參數(shù)傳遞是 v-slot:[key]="{ record, rowIndex, column }" 這里的參數(shù)是 arco 中傳遞的。
  • 然后我們?cè)谕競(jìng)鹘o我們的自己的插槽。
:name="key" v-bind="{ rowIndex: rowIndex, record: record, column: column }"
<template>
	<a-table
          row-key="id"
          :loading="loading"
          :pagination="pagination"
          :columns="(cloneColumns as TableColumnData[])"
          :data="tableData"
          :bordered="false"
          :size="size"
          @page-change="onPageChange"
        >
          <!--          key 就是 slotName-->
          <template
            v-for="(item, key, i) in slots"
            :key="i"
            v-slot:[key]="{ record, rowIndex, column }"
          >
            <slot
              :name="key"
              v-bind="{ rowIndex: rowIndex, record: record, column: column }"
            ></slot>
          </template>
        </a-table>
</template>
<script lang="ts" setup>
  import {
    useSlots,
  } from 'vue';
  const slots = useSlots();
</script>  

2. 父組件使用

     <SearchTable
        :search-model="searchModel"
        :table-cols="cols"
        :table-data="tableData"
        :pagination="pagination"
        @search="searchTableAction"
      >
        <template #channelCode="{ record, rowIndex, column }">
          {{ record }} - {{ rowIndex }} - {{ column }}
        </template>
        <template #channelName="{ record, rowIndex, column }">
          {{ record }} - {{ rowIndex }}- {{ column }}
        </template>
        <template #status="{ record, rowIndex, column }">
          {{ record }} - {{ rowIndex }}- {{ column }}
        </template>
      </SearchTable>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中@click綁定事件點(diǎn)擊不生效的原因及解決方案

    vue中@click綁定事件點(diǎn)擊不生效的原因及解決方案

    根據(jù)Vue2.0官方文檔關(guān)于父子組件通訊的原則,父組件通過(guò)prop傳遞數(shù)據(jù)給子組件,子組件觸發(fā)事件給父組件,這篇文章主要介紹了vue中@click綁定事件點(diǎn)擊不生效的解決方案,需要的朋友可以參考下
    2022-12-12
  • 前端vue2+js+springboot實(shí)現(xiàn)excle導(dǎo)入優(yōu)化解決方案

    前端vue2+js+springboot實(shí)現(xiàn)excle導(dǎo)入優(yōu)化解決方案

    這篇文章主要介紹了前端vue2+js+springboot實(shí)現(xiàn)excle導(dǎo)入優(yōu)化的相關(guān)資料,前端優(yōu)化包括使用ElementUI組件和封裝的JS解析函數(shù),后端重點(diǎn)在于多線程處理,通過(guò)定義線程安全技術(shù)及數(shù)據(jù)分片實(shí)現(xiàn)高效導(dǎo)入,需要的朋友可以參考下
    2025-11-11
  • vue-rx的初步使用教程

    vue-rx的初步使用教程

    這篇文章主要介紹了vue-rx的初步使用教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue使用v-model收集各種表單數(shù)據(jù)、過(guò)濾器的示例詳解

    Vue使用v-model收集各種表單數(shù)據(jù)、過(guò)濾器的示例詳解

    這篇文章主要介紹了Vue使用v-model收集各種表單數(shù)據(jù)、過(guò)濾器的示例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • vue中的v-show,v-if,v-bind的使用示例詳解

    vue中的v-show,v-if,v-bind的使用示例詳解

    這篇文章主要介紹了vue中的v-show,v-if,v-bind的使用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • vue+openlayers+nodejs+postgis實(shí)現(xiàn)軌跡運(yùn)動(dòng)效果

    vue+openlayers+nodejs+postgis實(shí)現(xiàn)軌跡運(yùn)動(dòng)效果

    使用postgres(postgis)數(shù)據(jù)庫(kù)以及nodejs作為后臺(tái),vue和openlayers做前端,openlayers使用http請(qǐng)求通過(guò)nodejs從postgres數(shù)據(jù)庫(kù)獲取數(shù)據(jù),這篇文章主要介紹了vue+openlayers+nodejs+postgis實(shí)現(xiàn)軌跡運(yùn)動(dòng),需要的朋友可以參考下
    2024-05-05
  • Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)el-select組件的示例代碼

    Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)el-select組件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)el-select組件的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的的可以參考一下
    2023-02-02
  • element合并表格行的方法實(shí)現(xiàn)

    element合并表格行的方法實(shí)現(xiàn)

    本文主要介紹了element合并表格行的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • vue+Element實(shí)現(xiàn)分頁(yè)效果

    vue+Element實(shí)現(xiàn)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了vue+Element實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue3實(shí)現(xiàn)列表無(wú)限滾動(dòng)的示例詳解

    Vue3實(shí)現(xiàn)列表無(wú)限滾動(dòng)的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Vue3實(shí)現(xiàn)列表無(wú)限滾動(dòng)的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-07-07

最新評(píng)論

和龙市| 平利县| 邳州市| 荥经县| 福清市| 二手房| 和政县| 云龙县| 景德镇市| 恭城| 郸城县| 铁岭县| 北宁市| 嵊州市| 岚皋县| 泸州市| 革吉县| 华阴市| 炉霍县| 九龙县| 江安县| 丹寨县| 卫辉市| 河源市| 日土县| 明水县| 文安县| 波密县| 莒南县| 扎兰屯市| 吉安市| 乌审旗| 应城市| 阿拉善左旗| 霍邱县| 阿瓦提县| 韩城市| 南乐县| 容城县| 尉氏县| 漾濞|