以下是一个使用React和Ant Design库创建可编辑表格模态框的示例代码:
npm install antd react react-dom
EditableTableModal.js
的文件,并添加以下代码:import React, { useState } from 'react';
import { Table, Button, Modal, Input } from 'antd';
const EditableTableModal = () => {
const [dataSource, setDataSource] = useState([
{ key: '1', name: 'John Doe', age: 30 },
{ key: '2', name: 'Jane Smith', age: 25 },
{ key: '3', name: 'Bob Johnson', age: 40 },
]);
const [visible, setVisible] = useState(false);
const [editingKey, setEditingKey] = useState('');
const columns = [
{
title: 'Name',
dataIndex: 'name',
editable: true,
},
{
title: 'Age',
dataIndex: 'age',
editable: true,
},
{
title: 'Actions',
dataIndex: 'actions',
render: (_, record) => {
const editable = isEditing(record);
return editable ? (
) : (
);
},
},
];
const isEditing = (record) => record.key === editingKey;
const edit = (key) => {
setEditingKey(key);
};
const save = (key) => {
const newData = [...dataSource];
const updatedRow = newData.find((item) => key === item.key);
if (updatedRow) {
const updatedFields = updatedRow.editableFields;
Object.keys(updatedFields).forEach((field) => {
updatedRow[field] = updatedFields[field];
});
setDataSource(newData);
setEditingKey('');
}
};
const cancel = () => {
setEditingKey('');
};
const showModal = () => {
setVisible(true);
};
const handleOk = () => {
setVisible(false);
};
const handleCancel = () => {
setVisible(false);
};
const handleInputChange = (e, key) => {
const { value } = e.target;
const newData = [...dataSource];
const updatedRow = newData.find((item) => key === item.key);
if (updatedRow) {
updatedRow.editableFields = { ...updatedRow.editableFields, name: value };
}
setDataSource(newData);
};
return (
<>
handleInputChange(e, 'newRow')} />
>
);
};
export default EditableTableModal;
EditableTableModal
组件,如下所示:import React from 'react';
import EditableTableModal from './EditableTableModal';
const App = () => {
return (
Editable Table Modal Example
);
};
export default App;
通过使用上述代码,你将能够创建一个具有可编辑表格和添加新行模态框的界面。
上一篇:编辑表格功能的运作不可预测。