关于antd getFieldsValue() 值为undefined的问题

1.在render()中打印
console.log("所有输入控件的值Items:",form.getFieldsValue());
结果为:

图片描述

2.在componentDidMount()中打印
console.log("componentDidMount中的值",form.getFieldsValue());
结果为:

图片描述

从render出来到componentDidMount中间到底还经历了什么,是form中的值变成undefined了,不是说form中的值不手动删除或者setFieldsValue 它的值是永远不会变得吗?

阅读 18.1k
3 个回答

这个问题是由于FormItemkey引起的。必须指定FormItemkey,并且不能使用index,原因是:
比如你删除了第一个input,删除后原来key=1FormItemkey就为0了。这时就会出现异常了,比如将删除的数据回显到第一条了,validate的时候出现undefined
我们的做法是:每加一个input,生成一个id,保证唯一,用这个id作为key,删除的时候找到对应的id删除,这样就不会存在key混乱的问题,你的问题也就解决了。

componentDidMount只是一个组件装载完毕的生命周期函数。并不代表你的数据都渲染完毕。

而render会多次触发,只要你的state或者props变化,就会引起虚拟dom的对比,然后做出相应变化。

补上demo:
图片描述

例如:增加三条input,删除第一个input,在删除方法里打印结果如下:
图片描述

点击保存 打印结果如下:

图片描述

为什么变成undefined了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题