[element] 简单封装一个表格展示

本文探讨了在Vue.js中如何在组件封装时处理父组件传递的未声明为props的属性(透传attributes),以及如何利用自定义作用域和插槽实现灵活的父子组件通信。
摘要由CSDN通过智能技术生成

简单封装

如果你想呈现一个表格,直接复制案例的话是这样的,圈出来的你需要写进入,麻烦

这时候把需要显示的列数据弄成一个对象数组, 给它列名和标题就行

 记得这个prop和源数据的prop要对应!!

const columns = [
  {
    label: "日期",
    prop: 'date'
  },
  {
    label: "姓名",
    prop: 'name'
  },
  {
    label: "地址",
    prop: 'address'
  },
]
const tableData = [
  {
    date: '2016-05-03',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    date: '2016-05-02',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    date: '2016-05-04',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    date: '2016-05-01',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
]

效果如下

 

透传 attributes

问题来了,原始的组件是可以传参数的 ,例如传一个斑马纹

但是我封装后不支持了啊!你总不能在这里预留一堆属性吧?

这时候有个属性叫$attrs

透传 Attributes 是指由父组件传入,且没有被子组件声明为 props 或是组件自定义事件的 attributes 和事件处理函数。

组件实例 | Vue.js

 加入代码是这样的话

我打印$attrs的话

就会变成这样

 

 自定义作用域

如果你想自定义成这样的话

哪列需要传入插槽就预留位置,先用element自带的template获取scope先, 再写具名插槽

外部调用可以哦通过作用域插槽获取子组件传来的scope,然后自定义插槽内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值