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中会死循环的解决方案
解决:
先判断值是否变化,不重复执行应该就不会死循环了
import equal from 'fast-deep-equal'
function App({value}) {
const [state, setState] = useState(value);
useEffect(update, [value])
function update() {
const fieldsValue = form.getFieldsValue();
if(!equal(fieldsValue, state)) {
form.setFiledsValue(value)
}
}
}