Skip to main content

Table

用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作

tips: 因为docusaurus样式中有table样式, 造成了冲突, 文档中的table样式可能与实际使用时略有不一致;

基础使用​

  • columns : 表头
  • data : 源数据
function App() {
const columns = [
{
label: '工单号',
key: 'number',
width: '91',
},
{
label: '标题',
key: 'title',
width: '91',
},
{
label: '优先级',
key: 'level',
width: '91',
},
{
label: '受理人/组',
key: 'handler',
},
{
label: '问题分类',
key: 'problem',
},
{
label: '创建时间',
key: 'createDate',
},
]
const data = [
{
number: '123456',
title: '你猜啊',
level: '紧急',
handler: '售前组',
problem: '你猜/再猜',
createDate: '2019-05-30',
},
{
number: '654321',
title: '你再猜啊',
level: '一般',
handler: '研发组',
problem: '你猜/再猜/猜不着',
createDate: '2019-05-30',
},
]
return (
<div className="ykui-demo-row">
<Table
columns={columns}
data={data}
/>
</div>
);
}

自定义展示内容​

  • render : 自定义渲染函数
function App() {
const columns = [
{
label: '工单号',
key: 'number',
width: '91',
},
{
label: '自定义标题',
key: 'title',
width: '91',
render: ({row}) => {
return <span className="txt">{row.title}</span>
}
},
{
label: '优先级',
key: 'level',
width: '91',
},
{
label: '受理人/组',
key: 'handler',
},
{
label: '问题分类',
key: 'problem',
},
{
label: '创建时间',
key: 'createDate',
},
{
label: '操作',
key: 'handle',
width: '91',
render: (item) => (
<a href="#" className="cell-link" onClick={() => console.log(item)}>
<span className="txt">领单</span>
</a>
),
},
]
const data = [
{
number: '123456',
title: '你猜啊',
level: '紧急',
handler: '售前组',
problem: '你猜/再猜',
createDate: '2019-05-30',
},
{
number: '654321',
title: '你再猜啊',
level: '一般',
handler: '研发组',
problem: '你猜/再猜/猜不着',
createDate: '2019-05-30',
},
]
return (
<div className="ykui-demo-row">
<Table
columns={columns}
data={data}
/>
</div>
);
}

可多选的表格​

设置以下下内容

  • type: 'checkbox'
  • rowKey
  • onRowCheck 多选时,选中行中调用onRowCheck的方法
  • checked 多选时,选中的行
function App() {
const columns = [
{
label: '工单号',
key: 'number',
width: '91',
},
{
label: '标题',
key: 'title',
width: '91',
},
{
label: '优先级',
key: 'level',
width: '91',
},
{
label: '受理人/组',
key: 'handler',
},
{
label: '问题分类',
key: 'problem',
},
{
label: '创建时间',
key: 'createDate',
},
{
label: '操作',
key: 'handle',
width: '91',
render: (item) => (
<a href="#" className="cell-link" onClick={() => console.log(item)}>
<span className="txt">领单</span>
</a>
),
},
]
const data = [
{
number: '123456',
title: '你猜啊',
level: '紧急',
handler: '售前组',
problem: '你猜/再猜',
createDate: '2019-05-30',
},
{
number: '654321',
title: '你再猜啊',
level: '一般',
handler: '研发组',
problem: '你猜/再猜/猜不着',
createDate: '2019-05-30',
},
]
return (
<div className="ykui-demo-row">
<Table
columns={columns}
data={data}
type='checkbox'
showRowHover={true}
rowKey='number'
/>
</div>
);
}

空表格状态和提示​

emptyDocs : 空表提示

data : 源数据

function App() {
const columns = [
{
label: '工单号',
key: 'number',
width: '91',
},
{
label: '标题',
key: 'title',
width: '91',
},
{
label: '优先级',
key: 'level',
width: '91',
},
{
label: '受理人/组',
key: 'handler',
},
{
label: '问题分类',
key: 'problem',
},
{
label: '创建时间',
key: 'createDate',
},
{
label: '操作',
key: 'handle',
width: '91',
render: (item) => (
<a href="#" className="cell-link" onClick={() => console.log(item)}>
<span className="txt">领单</span>
</a>
),
},
]
return (
<div className="ykui-demo-row">
<Table
columns={columns}
emptyDocs="修改空状态提示"
data={[]}
tbodyClass="is-pointer"
/>
</div>
);
}

可拓展的表格​

function App() {
const columns = [
{
label: '工单号',
key: 'number',
width: '91',
},
{
label: '标题',
key: 'title',
width: '91',
},
{
label: '优先级',
key: 'level',
width: '91',
},
{
label: '受理人/组',
key: 'handler',
},
{
label: '问题分类',
key: 'problem',
},
{
label: '创建时间',
key: 'createDate',
},
{
label: '操作',
key: 'handle',
width: '91',
render: (item) => (
<a href="#" className="cell-link" onClick={() => console.log(item)}>
<span className="txt">领单</span>
</a>
),
},
]
const data = [
{
number: '123456',
title: '你猜啊',
level: '紧急',
handler: '售前组',
problem: '你猜/再猜',
createDate: '2019-05-30',
},
{
number: '654321',
title: '你再猜啊',
level: '一般',
handler: '研发组',
problem: '你猜/再猜/猜不着',
createDate: '2019-05-30',
},
]
const onExpand = (row) => {
return new Promise(((resolve) => {
setTimeout(() => {
resolve({
name: '所属店铺王小虎夫妻店',
pid: 'ID12987122',
sid: 'ID10333',
category: '江浙小吃、小吃零食',
address: '上海市普陀区真北路',
desc: '荷兰优质淡奶,奶香浓而不腻',
})
}, 500)
}))
}
const expandRender = (props) => {
console.log(props)
return <div>expandRender</div>
}
return (
<div className="ykui-demo-row">
<Table
columns={columns}
onExpand={onExpand}
expandRender={expandRender}
data={data}
type="expand"
/>
</div>
);
}

固定表头​

height : 设置高度

function App() {
const columnsFix = [
{
label: '工单号',
key: 'number',
width: '91',
},
{
label: '标题',
key: 'title',
width: '91',
},
{
label: '优先级',
key: 'level',
width: '91',
},
{
label: '受理人/组',
key: 'handler',
},
{
label: '问题分类',
key: 'problem',
},
{
label: '创建时间',
key: 'createDate',
},
{
label: '操作',
key: 'handle',
width: '91',
render: (item) => (
<a href="#" className="cell-link" onClick={() => console.log(item)}>
<span className="txt">领单</span>
</a>
),
},
]
const data = [
{
number: '123456',
title: '你猜啊',
level: '紧急',
handler: '售前组',
problem: '你猜/再猜',
createDate: '2019-05-30',
},
{
number: '654321',
title: '你再猜啊',
level: '一般',
handler: '研发组',
problem: '你猜/再猜/猜不着',
createDate: '2019-05-30',
},
]
const dataMore = Object.keys(Array.apply(null, { length: 30 })).map((_) => data[0])
const onExpand = (row) => {
return new Promise(((resolve) => {
setTimeout(() => {
resolve({
name: '所属店铺王小虎夫妻店',
pid: 'ID12987122',
sid: 'ID10333',
category: '江浙小吃、小吃零食',
address: '上海市普陀区真北路',
desc: '荷兰优质淡奶,奶香浓而不腻',
})
}, 500)
}))
}
return (
<div className="ykui-demo-row">
<Table
columns={columnsFix}
height='calc(100vh - 330px)'
data={dataMore}
/>
</div>
);
}

Table API​

属性说明类型默认值
columns表头singleColumn []--
data表格的数据anyObject []--
showRowHover表格行的hover样式booleantrue
type表格类型checkbox〡expand--
onExpand扩展方法Function--
rowKey在单选和多选中,通过rowKey取出一行的唯一IDany--
selected单选时,选中的行any--
onRowSelect单选时,选中一行中调用onRowSelectFunction--
checked多选时,选中的行checkedProps--
onRowCheck多选时,选中行中调用onRowCheckFunction--
onRowClick点击一行时,调用此方法Function--
expandRender扩展内容Function--
emptyDocs表格为空时的提示string--
tbodyClasstbody 上的类名string--
height表格高度string--
style表格样式Object--
className表格类名string--

singleColumn API​

属性说明类型默认值
label标题string〡ReactNode〡Element--
key每一项的keystring--
width宽度string〡number--
fixed是否固定boolean--
className类名string--
render渲染时对数据处理Function--