展示行列数据。支持固定列、列排序、局部滚动、铺满布局、斑马纹与空状态插槽。
示例图

基础用法
页面 .json 文件 usingComponents 中引入组件
// json
{
"usingComponents": {
"mx-table": "/components/mxwui/table/index"
}
}页面 .wxml 文件中使用组件
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
bind:table_row_tap="handleRowTap"
/>Page({
data: {
dataSource: [
{ key: 0, name: '小明', age: '18', sex: '男', address: '北京' },
{ key: 1, name: '小何', age: '32', sex: '女', address: '上海' },
],
columns: [
{ title: '姓名', dataIndex: 'name', key: 'name', width: 150, fixed: true },
{ title: '年龄', dataIndex: 'age', key: 'age', width: 150, align: 'right', sorter: true },
{ title: '性别', dataIndex: 'sex', key: 'sex', width: 150, align: 'center' },
{ title: '地址', dataIndex: 'address', key: 'address', width: 250 },
],
},
handleRowTap(e) {
const { row, index } = e.detail;
console.log(row, index);
},
});更多用法示例
设置列宽 width
在 columns 项中设置 width,仅 displayType="DEFAULT" 时生效。
支持:
- 数字:按 rpx 计算,如
200 - 字符串 rpx:如
'120rpx' - 字符串 px:如
'80px' - 百分比:如
'25%'
未设置时默认 150(rpx)。
columns: [
{ title: '姓名', dataIndex: 'name', key: 'name', width: 200 },
{ title: '年龄', dataIndex: 'age', key: 'age', width: '100rpx' },
{ title: '性别', dataIndex: 'sex', key: 'sex', width: '80px' },
{ title: '地址', dataIndex: 'address', key: 'address', width: 280 },
]<mx-table dataSource="{{dataSource}}" columns="{{columns}}" />列对齐 align
在 columns 项中设置 align,可选 left、center、right,默认 left。表头与单元格同步对齐。
兼容旧属性 textAlignRight(等价于 align: 'right')。
columns: [
{ title: '左对齐', dataIndex: 'name', key: 'name', align: 'left' },
{ title: '居中', dataIndex: 'sex', key: 'sex', align: 'center' },
{ title: '右对齐', dataIndex: 'age', key: 'age', align: 'right' },
]局部滚动 scrollHeight
属性:scrollHeight,指定可滚动区域高度,如 360rpx、200px。
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
scrollHeight="360rpx"
/>铺满展示 displayType
属性:displayType,可选 DEFAULT、FULL,默认 DEFAULT。
DEFAULT:按列宽展示,可横向滚动,支持固定列FULL:列宽均分铺满一屏
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
displayType="FULL"
/>固定列 fixed
在 columns 项中设置 fixed: true,该列在横向滚动时左侧固定,并在滚动时展示阴影。
columns: [
{ title: '姓名', dataIndex: 'name', key: 'name', width: 150, fixed: true },
// ...
]列排序 sorter
在 columns 项中设置 sorter: true,点击表头在「默认 → 升序 → 降序」间切换。
事件:bind:table_sort,回调 e.detail 含 key、dataIndex、sorterStatus(normal / forward / reverse)。
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
bind:table_sort="handleSort"
/>超出省略 ellipsisRow
在 columns 项中设置 ellipsisRow,控制单元格最大展示行数,超出以省略号展示。
columns: [
{ title: '姓名', dataIndex: 'name', key: 'name', ellipsisRow: 2 },
{ title: '地址', dataIndex: 'address', key: 'address', ellipsisRow: 1 },
]空数据
dataSource 为空时展示空状态,默认带图标与文案,并在区域内水平垂直居中。
emptyText:文案,默认暂无数据emptyIcon:图标名,默认empty;空字符串不展示图标emptyIconUrl:自定义图片,优先于emptyIconemptyIconSize:图标尺寸,单位 rpx,默认120emptyIconColor:图标颜色,默认占位色
也可通过默认插槽完全自定义,此时需将 emptyIcon、emptyText 置为空字符串。
<mx-table dataSource="{{[]}}" columns="{{columns}}" displayType="FULL" />
<mx-table
dataSource="{{[]}}"
columns="{{columns}}"
displayType="FULL"
emptyIcon="order"
emptyText="暂无订单"
/>
<mx-table
dataSource="{{[]}}"
columns="{{columns}}"
displayType="FULL"
emptyIcon=""
emptyText=""
>
<view>暂无相关记录</view>
</mx-table>自定义根样式 customStyle
属性:customStyle,写入根节点内联样式。
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
customStyle="border-radius:16rpx;"
/>斑马纹 stripe
属性:stripe,开启斑马纹,默认 false。开启后默认隔行显示。
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
stripe="{{true}}"
/>斑马纹显示方式 stripeType
属性:stripeType,可选 ROW、COLUMN,默认 ROW。
ROW:隔行显示COLUMN:隔列显示
<!-- 隔行 -->
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
stripe="{{true}}"
stripeType="ROW"
/>
<!-- 隔列 -->
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
displayType="FULL"
stripe="{{true}}"
stripeType="COLUMN"
/>斑马纹颜色 stripeColor
属性:stripeColor,斑马纹颜色,默认背景色 #F8F9FA,支持任何合法颜色值。
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
displayType="FULL"
stripe="{{true}}"
stripeType="ROW"
stripeColor="#EFF0F5"
/>表头背景色 headerBgColor
属性:headerBgColor,表头背景色,默认 #FFFFFF,支持任何合法颜色值。
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
displayType="FULL"
headerBgColor="#F8F9FA"
/>自定义事件
<mx-table
dataSource="{{dataSource}}"
columns="{{columns}}"
bind:table_row_tap="handleRowTap"
bind:table_cell_tap="handleCellTap"
bind:table_sort="handleSort"
/>handleRowTap(e) {
// e.detail = { row, index }
},
handleCellTap(e) {
// e.detail = { row, rowIndex, cell, colIndex, value }
},
handleSort(e) {
// e.detail = { key, dataIndex, sorterStatus }
},参数
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| dataSource | Array | 数据源 | |||
| columns | Array | Column[] | [] |
列配置 | |
| displayType | String | DEFAULT、FULL |
DEFAULT |
布局类型 | |
| scrollHeight | String | 可滚动区域高度,如 360rpx |
|||
| emptyText | String | 暂无数据 |
空数据文案,空字符串时不展示文案 | ||
| emptyIcon | String | empty |
空状态图标名,空字符串不展示 | ||
| emptyIconUrl | String | 空状态自定义图片,优先于 emptyIcon | |||
| emptyIconSize | Number | 数字 | 120 |
空状态图标尺寸,单位 rpx | |
| emptyIconColor | String | 颜色值 | 占位色 | 空状态图标颜色 | |
| customStyle | String | 根节点自定义样式 | |||
| stripe | Boolean | true、false |
false |
是否开启斑马纹 | |
| stripeType | String | ROW、COLUMN |
ROW |
斑马纹显示方式:隔行 / 隔列 | |
| stripeColor | String | 颜色值 | #F8F9FA |
斑马纹颜色 | |
| headerBgColor | String | 颜色值 | #FFFFFF |
表头背景色 |
Column
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| title | String | 列标题 | |||
| dataIndex | String / Array | 取值字段,支持 'a.b' 或 ['a','b'] |
|||
| key | String | 列唯一标识,默认取 dataIndex |
|||
| width | Number / String | 数字、120rpx、80px、25% |
150 |
列宽,DEFAULT 模式生效;数字按 rpx 计算 |
|
| fixed | Boolean | true、false |
false |
是否左侧固定 | |
| align | String | left、center、right |
left |
列对齐方式 | |
| textAlignRight | Boolean | true、false |
false |
是否右对齐(兼容旧写法,等价 align: 'right') |
|
| sorter | Boolean | true、false |
false |
是否可排序 | |
| ellipsisRow | Number | 数字 | 最大展示行数,超出省略 |
事件
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| table_row_tap | 点击行 | { row, index } |
| table_cell_tap | 点击单元格 | { row, rowIndex, cell, colIndex, value } |
| table_sort | 点击排序表头 | { key, dataIndex, sorterStatus } |
其他说明
- 微信小程序不支持带作用域的 Slot,暂不提供单元格自定义插槽,单元格展示
dataIndex对应字段文本。 displayType="FULL"时列宽均分,width/fixed不再生效。width支持数字(rpx)、rpx/px/%字符串;数字默认按 rpx 换算为 px,未设置时默认150。- 固定列依赖
position: sticky,建议基础库 2.10.0+。