欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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: '渠道名稱',
      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實(shí)現(xiàn)動(dòng)態(tài)表格提交參數(shù)動(dòng)態(tài)生成控件的操作

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

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

    vue antd Form表單的使用及說(shuō)明

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

    vue如何實(shí)現(xiàn)拖動(dòng)圖片進(jìn)行排序Vue.Draggable

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論