以上可以封装成一个组件吗
时间: 2023-11-22 14:04:58 浏览: 50
当然可以,你可以将以上的代码封装成一个可复用的组件,方便在多个页面或组件中使用。以下是一个简单的示例代码:
```javascript
import React, { Component } from 'react';
import { Table } from 'antd';
class ClickableTable extends Component {
state = {
selectedRowKeys: [],
};
handleRowClick = (record) => {
console.log(record);
this.setState({selectedRowKeys: [record.key]});
if (this.props.onRowClick) {
this.props.onRowClick(record);
}
};
handleSelectRow = (record) => {
this.setState({selectedRowKeys: [record.key]});
if (this.props.onSelectRow) {
this.props.onSelectRow(record);
}
};
render() {
const { columns, dataSource, rowSelection } = this.props;
return (
<Table
rowSelection={{
type: 'radio',
onSelect: this.handleSelectRow,
selectedRowKeys: this.state.selectedRowKeys,
...rowSelection
}}
onRow={(record) => ({
onClick: () => {this.handleRowClick(record);}
})}
columns={columns}
dataSource={dataSource}
/>
);
}
}
export default ClickableTable;
```
在这个组件中,我们定义了两个回调函数 handleRowClick 和 handleSelectRow,用于处理行点击和行选择事件。我们还定义了一个 state 属性 selectedRowKeys 来控制当前选中行的状态。
组件接收三个 props:
- columns:表示表格的列信息。
- dataSource:表示表格的数据源。
- rowSelection:表示表格的选择配置。该属性可以覆盖默认的选择配置。
你可以使用该组件来实现单击某一行进行选择的功能,例如:
```javascript
import React, { Component } from 'react';
import ClickableTable from './ClickableTable';
class MyComponent extends Component {
handleRowClick = (record) => {
console.log('Clicked row:', record);
};
handleSelectRow = (record) => {
console.log('Selected row:', record);
};
render() {
const columns = [
{ title: 'Name', dataIndex: 'name' },
{ title: 'Age', dataIndex: 'age' },
{ title: 'Address', dataIndex: 'address' },
];
const data = [
{ key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park' },
{ key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park' },
{ key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park' },
];
return (
<ClickableTable
columns={columns}
dataSource={data}
onRowClick={this.handleRowClick}
onSelectRow={this.handleSelectRow}
/>
);
}
}
export default MyComponent;
```
在这个示例中,我们使用 ClickableTable 组件来展示一个包含三列数据的表格,并监听行点击和行选择事件,分别输出相应的信息。
阅读全文