亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue3中Slot插槽透傳,二次封裝Arco的table組件詳解

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

Vue3中Slot插槽透傳,二次封裝Arco的table組件

Vue3 插槽透傳

需求是這樣, 對acro的table表格進行二次封裝。

封裝成一個 <SearchTable> 組件。要求二次封裝的組件可以將slot透傳給原生的table組件。

如下這樣,將SearchTable中的插槽透傳給 <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>

一共有下面幾個字段:

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

步驟

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

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

因為我們要對table組件進行二次封裝,所以我們要將table中的插槽透傳出去。下面是實現(xiàn)原理。

1. 知道父組件傳遞了一個slot

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

  • 從slots中獲取父組件傳的插槽信息,如果沒有則就使用 arco 中默認的。即正常展示。當自定義了插槽, 就選擇插槽的內(nèi)容。
  • 插槽的參數(shù)傳遞是 v-slot:[key]="{ record, rowIndex, column }" 這里的參數(shù)是 arco 中傳遞的。
  • 然后我們在透傳給我們的自己的插槽。
: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é)

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

相關文章

  • vue實現(xiàn)動態(tài)表格提交參數(shù)動態(tài)生成控件的操作

    vue實現(xiàn)動態(tài)表格提交參數(shù)動態(tài)生成控件的操作

    這篇文章主要介紹了vue實現(xiàn)動態(tài)表格提交參數(shù)動態(tài)生成控件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue antd Form表單的使用及說明

    vue antd Form表單的使用及說明

    這篇文章主要介紹了vue antd Form表單的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue如何實現(xiàn)拖動圖片進行排序Vue.Draggable

    vue如何實現(xiàn)拖動圖片進行排序Vue.Draggable

    這篇文章主要介紹了vue如何實現(xiàn)拖動圖片進行排序Vue.Draggable,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • element-ui中table組件的toggleRowSelection()方法使用

    element-ui中table組件的toggleRowSelection()方法使用

    這篇文章主要介紹了element-ui中table組件的toggleRowSelection()方法使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue響應式系統(tǒng)的原理詳解

    Vue響應式系統(tǒng)的原理詳解

    這篇文章主要為大家介紹了Vue響應式系統(tǒng)的原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 從零開始在NPM上發(fā)布一個Vue組件的方法步驟

    從零開始在NPM上發(fā)布一個Vue組件的方法步驟

    這篇文章主要介紹了從零開始在NPM上發(fā)布一個Vue組件的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue3全局屬性app.config.globalProperties的實現(xiàn)

    Vue3全局屬性app.config.globalProperties的實現(xiàn)

    Vue3中的app.config.globalProperties是一個強大的全局配置功能,允許我們在應用級別設置和訪問屬性,本文主要介紹了Vue3全局屬性app.config.globalProperties的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • vue3?element-plus?實現(xiàn)表格數(shù)據(jù)更改功能詳細步驟

    vue3?element-plus?實現(xiàn)表格數(shù)據(jù)更改功能詳細步驟

    這篇文章主要介紹了vue3 element-plus實現(xiàn)表格數(shù)據(jù)更改功能,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Vue實現(xiàn)答題功能

    Vue實現(xiàn)答題功能

    最近接手做一個前端小項目,基于vue實現(xiàn)答題功能,具體功能有判斷用戶是否答對,答對的話跳到下一題,答錯的話彈窗告訴用戶有錯題,請重新答題,功能非常人性化,對實現(xiàn)代碼感興趣的朋友一起看看吧
    2021-06-06
  • Vue中使用定時器(setInterval、setTimeout)的兩種方式

    Vue中使用定時器(setInterval、setTimeout)的兩種方式

    js中定時器有兩種,一個是循環(huán)執(zhí)行?setInterval,另一個是定時執(zhí)行?setTimeout,這篇文章主要介紹了Vue中使用定時器?(setInterval、setTimeout)的兩種方式,需要的朋友可以參考下
    2023-03-03

最新評論