在React中使用Ant Design的Table组件来展示图片,并实现点击放大预览的功能,可以使用antd
的Image
组件来完成图片的渲染,以及使用Modal
组件来实现图片的放大预览。以下是一个简单的实现示例:
import React from 'react';
import { Table, Image, Modal } from 'antd';
import { PictureTwoTone } from '@ant-design/icons';
const data = [
{
key: '1',
name: 'John Brown',
age: 32,
pictures: ['https://example.com/picture1.jpg', 'https://example.com/picture2.jpg'],
},
// ... 更多数据
];
const columns = [
{
title: 'Name',
dataIndex: 'name',
key: 'name',
},
{
title: 'Age',
dataIndex: 'age',
key: 'age',
},
{
title: 'Pictures',
dataIndex: 'pictures',
key: 'pictures',
render: (pictures) => (
<>
{pictures.map((pic) => (
<Image
src={pic}
alt="example"
style={{ marginRight: 4 }}
onClick={() => showPreview(pictures, pic)}
key={pic}
/>
))}
</>
),
},
];
const [previewImage, setPreviewImage] = React.useState('');
const [previewVisible, setPreviewVisible] = React.useState(false);
const showPreview = (pictures, current) => {
setPreviewImage(current);
setPreviewVisible(true);
};
const closePreview = () => {
setPreviewVisible(false);
};
const TableWithImages = () => (
<>
<Table columns={columns} dataSource={data} />
<Modal
visible={previewVisible}
footer={null}
onCancel={closePreview}
bodyStyle={{
textAlign: 'center',
overflowY: 'auto',
}}
>
<Image src={previewImage} alt="Preview" style={{ maxWidth: '100%' }} />
</Modal>
</>
);
export default TableWithImages;
在这个示例中,我们定义了一个名为data
的数组,它包含了一些示例数据,其中每个对象都有一个pictures
数组,包含了图片的URL。columns
数组定义了表格的列,并且在render
函数中对pictures
数组进行了遍历,为每个图片生成了一个Image
组件,并且为每个图片组件添加了点击事件onClick
,当图片被点击时,会调用showPreview
函数,并将当前图片的URL设置为预览的图片。
showPreview
函数将设置预览的图片状态和图片URL,而closePreview
函数将关闭预览窗口。最后,在TableWithImages
组件中渲染表格和模态框。