formily 常见bug积累

355 阅读1分钟

项目基建:formily + React + Redux + 远程schema + typescript

formily初始化values报错

现象:页面一开始进来正常,退出再点进来后报错如下截图

定位代码位置:

useDeepCompareEffect(() => {
    if (!state.dirty && form) {
      form.setInitialValues(initialFormValues, 'overwrite');
    }
  }, [initialFormValues, form]);

相关知识

overwrite赋值方式会直接用 = 赋值

****

type IFormMergeStrategy = 'overwrite' | 'merge' | 'deepMerge' | 'shallowMerge'

修改

useDeepCompareEffect(() => {
    if (!state.dirty && form) {
      form.setInitialValues(initialFormValues);
    }
  }, [initialFormValues, form]);

dependency 与 validate时机

现象:表单提交正确数据时,校验却用了上一步修改的数据,导致报错

定位代码位置:

相关知识

修改:setTimeout


表单提交数据的effects选择

——结合Debtor表格看底下几个提交数据的实际的区别

onFormInputChange

onFieldInputValueChange

onFieldValueChange

onFormValuesChange