formik.handleChange 和 formik.setFieldValue 有什么区别

What is the difference between formik.handleChange and formik.setFieldValue

formik中,在属性onChange里面,有时会调用onChange = {formik.handleChange},有时会调用onChange = {v => formik.setFieldValue('field', v)}。这两个有什么区别?

是否可以仅使用 formik.handleChange 来代替 formik.setFieldValue

handleChange returns:

handleChange: (e: React.ChangeEvent<any>) => void

通用输入更改事件处理程序。这将更新 values[key],其中 key 是事件发射输入的 name 属性。如果 name 属性不存在,handleChange 将查找输入的 id 属性。注意:这里的“输入”是指所有HTML个输入。

setFieldValue returns:

setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void

命令式设置values。如果 validateOnChange 设置为 true(默认情况下),调用此方法将触发对 运行 的验证。您还可以通过将第三个参数作为 false.

进行显式 prevent/skip 验证

可以找到doc哪里写的不一样