要动态加载明细数据,可以使用 React 的状态来存储明细数据,并在需要加载明细数据时更新状态。以下是一个示例代码:

import React, { useState } from 'react';
import { Form, List, Input, Button } from 'antd';

const DynamicList = () => {
  const [details, setDetails] = useState([]); // 初始化明细数据为空数组

  const addDetail = () => {
    setDetails([...details, { id: Date.now(), value: '' }]);
  };

  const removeDetail = (id) => {
    setDetails(details.filter(detail => detail.id !== id));
  };

  const handleChange = (id, value) => {
    const updatedDetails = details.map(detail => {
      if (detail.id === id) {
        return { ...detail, value };
      }
      return detail;
    });
    setDetails(updatedDetails);
  };

  return (
    <Form>
      <Form.List name='details'>
        {(fields, { add, remove }) => (
          <>
            {fields.map(field => (
              <List.Item key={field.key}>
                <Input
                  value={details.find(detail => detail.id === field.key)?.value}
                  onChange={e => handleChange(field.key, e.target.value)}
                />
                <Button onClick={() => remove(field.name)}>删除</Button>
              </List.Item>
            ))}
            <Button onClick={add}>新增</Button>
          </>
        )}
      </Form.List>
    </Form>
  );
};

 export default DynamicList;

在上述代码中,我们使用 useState 钩子来创建一个名为 details 的状态,用于存储明细数据。addDetail 函数用于在点击'新增'按钮时向 details 添加一个新的明细数据。removeDetail 函数用于在点击'删除'按钮时从 details 中移除指定的明细数据。handleChange 函数用于在输入框的值发生变化时更新对应的明细数据。

在 Form.List 的 render 函数中,我们使用 fields.map 方法来遍历所有明细数据,并将每个明细数据渲染为一个 List.Item 组件。在输入框的 value 属性中,我们使用 details.find 方法来根据明细数据的 id 找到对应的 value 值。在输入框的 onChange 事件中,我们调用 handleChange 函数来更新明细数据的值。

点击'新增'按钮会通过 add 方法添加一个新的明细数据,并通过 remove 方法调用'删除'按钮来移除指定的明细数据。


原文地址: https://www.cveoy.top/t/topic/qCsp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录