setFieldsValue 失效
form表单有一个区域是根据条件渲染的,条件修改触发productChange函数 该区域渲染完成后会立刻setFieldsValue => 失效
原因
setFieldsValue 在from初始化值之前调用,后面被初始化覆盖了
解决方案
// 一开始使用settimeout。
// 发现页面会闪一下,原因是setTimeout会被推到宏任务,该区域渲染完后setFieldsValue才触发然后重新重新渲染
const productChange = () => {
setTimeout(() => {
setFieldsValue({ contentType: 1});
}, 0);
};
// 那么有没有什么方法可以将该问题解决呢?
// 于是将值得修改修改到微任务里,但是微任务不会触发页面更新,那在后面加多一个useState去触发react的更新。=> 完美,功能正常
const productChange = async() => {
await setFieldsValue({ contentType: 1});
setRefresh(refresh+1); // 触发更新
};