最近有在小程序中用table的需求,但是没有找到有符合要求的组件,所以自己弄了一个,能满足基本需求。
组件下载:https://download.csdn.net/download/weixin_67585820/85047405
引入
"usingComponents": {
"table": "/components/table/table"
}
文档
props
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
header | 表格头,下面详细说明 | Array | [ ] |
list | 内容列表 | Array | [ ] |
show-active | 当点击或长按时 选中的行是否显示背景颜色 | Boolean | true |
active-color | 当show-active为true时有效;选中行的颜色 | Boolean | #d6e8ff |
is-sroll | 表格是否能横向滚动 | Boolean | false |
col-width | is-sroll为true时有效;单位:rpx;平均每列的宽度 | Number | 假设有n列,n<3 ? 730/n : 300 |
max-line | 最多显示几行文字,超出隐藏 | Number | 2 |
header props
header 为一个对象数组,数组中的每一个对象包含以下 key。
参数 | 说明 |
---|---|
key | list中要显示的列对应key |
title | 表格中显示的文字 |
renderBody | 是个function;优先级高于key,可以根据内容渲染显示文字 |
renderColor | 是个function;可以根据内容渲染文字颜色 |
header的用法会有示例
外部样式
不再针对每一个详细说明,类名已经很明显了,大家这么聪明一看就懂
‘table-class’, ‘tr-class’, ‘td-class’, ‘th-class’, ‘tr-class_even’, ‘tr-class_odd’
events
事件名 | 说明 |
---|---|
bind:onClick | 点击行,从返回参数的 detail 中获取到index,data;index:点击的那一行,data:这一行的数据 |
bind:onLongPress | 长按行,参数同上 |
示例
header的用法
wxml:
<table header="{{header}}" list="{{list}}"/>
js:
Page:({
data: {
list: [
{
name: '飞飞',
address: '山东省济南市',
gender: 0
},
{
name: '贝尔',
address: '山东省青岛市',
gender: 1
}
],
header: [
{
key: 'name',
title: '姓名',
}, {
key: 'address',
title: '地址'
},
{
title: '性别',
renderBody: (item, index) => {
return Number(item.gender) ? '女' : '男';
},
renderColor: (item, index) => {
return Number(item.gender) ? '#fd4949' : '#1a84f1';
},
}
]
},
})
左右滑动
<table header="{{header}}" list="{{list}}" is-scroll></table>
自定义样式
<table header="{{header}}" list="{{list}}" th-class="th" td-class="td" tr-class_odd="tr-odd""></table>
.tr-odd {
background-color: #f5f4ff;
}
/*去掉边框*/
.td::before {
display: none;
}
.th {
background-color: #6889ff;
color: #fff;
}
table组件目前是这样,后面还会加新的功能