antd自定义表头,自定义表单元格
主要是在定义table的插槽的时候,添加bodyCell和headerCell
render() { const columns = [ { title: '序号', key: 'sort', dataIndex: 'sort', render: (_, record, idx) => idx + 1 }, { customTitle: () => <antRow justify="end"> <img src={expand} style={{ width: '20px', cursor: 'pointer' }} onClick={() => this.isExpand = !this.isExpand} /> </antRow>, key: 'isExpand', dataIndex: 'isExpand', children: [ { customTitle: () => <antRadio>测试1</antRadio>, key: 'staticPrice', dataIndex: 'staticPrice' }, { customTitle: () => <antRadio>测试2</antRadio>, key: 'enquiryPrice', dataIndex: 'enquiryPrice' }, ] }, { title: '备注', key: 'partRemark', dataIndex: 'partRemark', render: (val)=> <antInput value={val} maxLength={50}/> }, ]; const expandColumns = [ { title: '序号', key: 'sort', dataIndex: 'sort', render: (_, record, idx) => idx + 1 }, { customTitle: () => <antRow justify="end"> <img src={expand} style={{ width: '20px', cursor: 'pointer' }} onClick={() => this.isExpand = !this.isExpand} /> </antRow>, key: 'isExpand', dataIndex: 'isExpand', children: [ { customTitle: () => <antRadio>测试1</antRadio>, key: 'staticPrice', dataIndex: 'staticPrice' }, { customTitle: () => <antRadio>测试2</antRadio>, key: 'enquiryPrice', dataIndex: 'enquiryPrice' }, { customTitle: () => <antRadio>测试3</antRadio>, key: 'sort', dataIndex: 'sort' }, ] }, { title: '备注', key: 'partRemark', dataIndex: 'partRemark', render: (val)=> <antInput value={val} maxLength={50}/> }, ]; return (<> <antRow> <antTable columns={this.isExpand ? expandColumns : columns} dataSource={this.partList} bordered={true} size="small" style={{ width: '100%' }} pagination={false} rowSelection={{ type: 'checkbox', selectedRowKeys: this.selectedRowKeys, onChange: (keys) => { this.selectedRowKeys = keys; } }} v-slots={{ bodyCell: (column) => { // bodyCell 固定写法 if (column.column.render) { const cellRender = column.column.render.bind(this); return cellRender(column.value, column.record, column.index); } }, headerCell: (column) => { if (column.column.customTitle) { const cellRender = column.column.customTitle.bind(this); return cellRender(); } } }} /> </antRow> </>) }