这个不是reacthooks
时间: 2023-08-31 16:28:39 浏览: 83
非常抱歉,我理解有误。下面是使用React Hooks来实现的示例代码:
```jsx
import React, { useState } from 'react';
import { Modal, Table, Button } from 'antd';
const dataSource = [
{
key: '1',
name: 'Mike',
age: 32,
address: '10 Downing Street'
},
{
key: '2',
name: 'John',
age: 42,
address: '10 Downing Street'
},
{
key: '3',
name: 'Tom',
age: 28,
address: '10 Downing Street'
}
];
const columns = [
{
title: 'Name',
dataIndex: 'name',
key: 'name'
},
{
title: 'Age',
dataIndex: 'age',
key: 'age'
},
{
title: 'Address',
dataIndex: 'address',
key: 'address'
}
];
function BatchSelectModal(props) {
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [selectedRows, setSelectedRows] = useState([]);
const onSelectChange = (selectedRowKeys, selectedRows) => {
setSelectedRowKeys(selectedRowKeys);
setSelectedRows(selectedRows);
};
const handleOk = () => {
props.onOk(selectedRows);
};
const rowSelection = {
selectedRowKeys,
onChange: onSelectChange
};
return (
<Modal
title="Select Data"
visible={props.visible}
onOk={handleOk}
onCancel={props.onCancel}
>
<Table
dataSource={dataSource}
columns={columns}
rowSelection={rowSelection}
/>
</Modal>
);
}
function Demo() {
const [visible, setVisible] = useState(false);
const [selectedData, setSelectedData] = useState([]);
const handleShowModal = () => {
setVisible(true);
};
const handleModalOk = (selectedRows) => {
setSelectedData(selectedRows);
setVisible(false);
};
const handleModalCancel = () => {
setVisible(false);
};
return (
<div>
<Button onClick={handleShowModal}>Select Data</Button>
<p>Selected Data:</p>
<ul>
{selectedData.map((item) => (
<li key={item.key}>
{item.name} ({item.age}) - {item.address}
</li>
))}
</ul>
<BatchSelectModal
visible={visible}
onOk={handleModalOk}
onCancel={handleModalCancel}
/>
</div>
);
}
export default Demo;
```
在这个代码中,我们使用了useState来定义了一些状态变量,而不是使用类组件中的this.state。然后我们使用了useState返回的数组中的第一个值来表示每个状态变量的当前值,第二个值来表示修改状态变量的函数。这样在修改状态变量时,我们不需要使用this.setState()方法,而是直接调用修改状态变量的函数即可。这样使得代码更加简洁易懂,同时也更加方便管理组件的状态。
阅读全文