写在开头:
之前写过一篇插槽透传文章,总觉得代码不够简洁,幸亏找到大佬文章,参考了下做了个优化版
- Table.vue
<template>
<el-table :data="list">
<Column v-for="column in columns" :key="column.prop" :column="column" :sortParams="sortParams" @sortChange="handleSortChange">
<template v-for="slotItem in Object.keys($scopedSlots)" #[slotItem]="scope">
<slot :name="slotItem" v-bind="scope"></slot>
</template>
</Column>
</el-table>
</template>
<script lang="ts">
import Column from './Column.vue';
export default {
props: {
columns: {
type: Array,
default: () => [
{ prop: 'name', label: '姓名', sortable: true },
{ prop: 'age', label: '年龄', sortable: true },
{ prop: 'info', label: '个人信息', children: [
{ prop: 'parent'