react&antd(12)动态表单的默认值问题

最近遇到一个需求是有一个表单可以输入各种信息,然后还需要有一个编辑功能,点击编辑的时候需要把当前数据填入到表单里面。在网上查了很多种方法,然后我的思路是使用initialValues搭配setState()使用。默认值都为空,然后点击单条数据时把该条数据需要的字段setState()更新。

javascript 复制代码
// Table组件的columns
[
        {
            xxx
        },
		{
			title: '操作',
			key: 'operator',
			dataIndex: 'operator',
			align: "center",
			width: 100,
			render: (item, record) => {
				return (
					<div>
						<Button type='primary' onClick={()=> openModal(record)}>编辑</Button>
					</div>
				)
			}
		 },
]



	const openModal = (record) => {
        // 有传record说明是点击编辑
		if (record) {
            this.setState({
             //在这里把你需要填入的字段进行setState   
             })
		}
	}

注意在setState的时候要按照antd需要的数据结构进行传递,以上面的祝福语列表这个Form.Item为例,此时blessing_list需要是有个数组,里面的每一项就是一行数据,"xxx","yyy"在页面上就是如下图所示,默认是两条数据的。其他的input和select也是类似的做法。

javascript 复制代码
<Form.Item
	className={styles.formItem}
    name='blessing_list'
	label='祝福语列表'
	rules={[{ required: true, message: '请填写祝福语列表!' }]}
	initialValue={blessing_list}
>
	<Form.List name="blessing_list">
		{(fields, { add, remove }) => (
			<>
			{fields.map(({ key, name, fieldKey, ...restField }, index) => (
			    <Space key={key} align="baseline">
				    <Form.Item
					    style={{ flex: 1 }}
						{...restField}
						name={[name]}
						width={'100%'}
						fieldKey={[fieldKey]}
						label={`祝福语${index + 1}`}
						rules={[{ required: true, message: '请填写祝福语!' }]}
					>
						<Input style={{ flex: 1 }} />
					</Form.Item>
						<MinusCircleOutlined onClick={() => remove(name)} width={20} />
				</Space>
			))}
	    <Form.Item>
			<Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
				新增祝福语
			</Button>
	    </Form.Item>
			</>
			)}
    </Form.List>
</Form.Item>
相关推荐
程序员海军2 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
zttbee3 小时前
echarts图表tooltip色块失效
前端·javascript·echarts
excel4 小时前
IndexNow:让搜索引擎更快发现网站更新的主动通知协议
前端·后端·架构
子兮曰5 小时前
CSS 复现 23 种设计风格:从拟物到液态玻璃的成本阶梯与兜底写法【实战】
前端·css·视觉设计
虚无境5 小时前
如何用AI帮我写出实用的插件
前端·javascript·ai编程
柳杉6 小时前
从数字化到数智化:3D 可视化大屏的下一个五年
前端·ai编程·数据可视化
濮水大叔6 小时前
函数式与对象式:前端架构的两种成本曲线
vue.js·react.js·函数式编程
zimoyin6 小时前
在 C# 里嵌入 JavaScript:用 Jint 做可热更新的自动化脚本(从入门到踩坑)
javascript·c#·自动化
风骏时光牛马7 小时前
从零到实战:AI全栈学习进阶路线
前端
FRing037 小时前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数