antd from setFieldsValue 失效

7,121 阅读1分钟

setFieldsValue 失效

form表单有一个区域是根据条件渲染的,条件修改触发productChange函数 该区域渲染完成后会立刻setFieldsValue => 失效

image.png

原因

setFieldsValue 在from初始化值之前调用,后面被初始化覆盖了

解决方案

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