vue3二次封裝element-plus表格,slot透?jìng)?,?dòng)態(tài)slot。

在一個(gè)組件中使用二次封裝的表格組件,slot如何透?jìng)鳌?/h2>

例如:有3個(gè)組件,C1,C2,Table,C1組件使用了C2組件,C2組件使用了Table,那么在C1組件中如何把slot透?jìng)鞯絋able組件中。

Table組件 Table.vue 在main.js 配置全局組件。

    <template>
      <el-table v-bind="$attrs">
         <template v-for="column in $attrs.columns">
          <el-table-column v-if="column.slotName" :key="column.prop" v-bind="column">
            <template #default="scope">
                <slot :name="column.slotName" v-bind="scope"></slot>
            </template>
          </el-table-column>
          <el-table-column v-else :key="column.prop" v-bind="column" />
        </template>
      </el-table>
     </template>
     
     <script setup></script>

C2組件 C2.vue

    <template>
        <el-card>其他內(nèi)容</el-card>
        <el-card>
            <Table v-bind="$attrs">
              <template
                  v-for="column in $attrs.columns.filter(i => i.slotName)" 
                  :key="column.slotName" 
                  #[column.slotName]="scope">
                <slot :name="column.slotName" v-bind="scope" />
              </template>
             </Table>
        </el-card>
    </template>
    
    <script lang="ts" setup></script>

C1組件 C1.vue

    <template>
      <C2 :columns="tableColumns" :data="tableData">
         <template #status="{row}">
             <div>
               <el-tag type="success">{{ row.status }}</el-tag>
             </div>
         </template>
      </C2>
    </template>
    
    <script lang="ts" setup>
      import { ref } from "vue";

      const tableData = ref<Array<any>>([
       {id: 1, name: "JY-SZ-2023", createdtime: "2023-12-31", status: "正常"},
       {id: 2, name: "VC890D", createdtime: "2024-06-30", status: "正常"}
    ])
      const tableColumns = [
          {
            "label": "ID",
            "prop": "id",
          },
          {
            "label": "名稱",
            "prop": "name",
          },
          {
            "label": "創(chuàng)建時(shí)間",
            "prop": "createdtime",
          },
          {
            "label": "狀態(tài)",
            "prop": "status",
            "slotName": 'status',
          }
    ]
  </script>

在C1組件中正常展示tag

2CF96E3D-D005-4ebd-9C89-2B285355C1DB_在C1組件中正常展示tag.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容