useDynamicList 实现动态列表

useDynamicList 一个帮助你管理动态列表状态,并能生成唯一 key 的 Hook useDynamicList

Demo

import { MinusCircleOutlined, PlusCircleOutlined, PlusOutlined } from '@ant-design/icons';
import { useDynamicList } from 'ahooks';
import { Button, Form, Input, Space } from 'antd';
import React from 'react';

const mockData = [
    { firstName: 'Maray', lastName: 'Jon' },
    { firstName: '小红', lastName: '珍妮' },
]

export default () => {
    const { list, remove, push, getKey } = useDynamicList(mockData);
    return (
        <>
            <Form autoComplete='off' onFinish={(val) => console.log('val', val)}>
                {list.map((item: { firstName: string, lastName: string }, index) => (
                    <Space key={index} style={{ display: 'flex', marginBottom: 8 }} align='baseline'>
                        <Form.Item name={['firstName', getKey(index)]} required initialValue={item?.firstName}>
                            <Input allowClear placeholder='请输入' />
                        </Form.Item>
                        <Form.Item name={['lastName', getKey(index)]} required initialValue={item?.lastName}>
                            <Input allowClear placeholder='请输入' />
                        </Form.Item>
                        <MinusCircleOutlined onClick={() => remove(index)} />
                    </Space>
                ))}
                <Form.Item>
                    <Button type='dashed' onClick={() => push({ firstName: '', lastName: '' })} icon={<PlusOutlined />}>
                        添加一行
                    </Button>
                </Form.Item>
                <Form.Item>
                    <Button htmlType='submit' type='primary'>提交</Button>
                </Form.Item>
            </Form>
        </>
    );
};

效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值