setFieldsValue的字段要对应得上,不要有多余的字段

You cannot set a form field before rendering a field associated with the value.
警告,字面意义去看是说在 render之前设置了表单值的问题

  • 用setFieldsValue给表单Form的某一个filed赋值时,可能掺杂了非表单控件中的字段
  • Form表单在赋值和渲染时,有些字段无法渲染在现有的字段(因为不存在),就会报出这样的错误;
  • 用 form.setFieldsValue时,赋值的数据要一一匹配field,用不到的不要赋值即可;这样操作之后错误提示就不再提醒了。

没有 setFieldValue,只有 setFieldsValue
使用 form.setFieldValue会报错

form.setFieldsValue死循环

antd的form组件setFieldsValue在ComponentWillreceiveProps中会死循环的解决方案
解决:
先判断值是否变化,不重复执行应该就不会死循环了

  1. import equal from 'fast-deep-equal'
  2. function App({value}) {
  3. const [state, setState] = useState(value);
  4. useEffect(update, [value])
  5. function update() {
  6. const fieldsValue = form.getFieldsValue();
  7. if(!equal(fieldsValue, state)) {
  8. form.setFiledsValue(value)
  9. }
  10. }
  11. }