【问题标题】:What is the difference betwee submitForm, handleSubmit, onSubmit in formik?formik 中的 submitForm、handleSubmit、onSubmit 有什么区别?
【发布时间】:2019-07-12 12:09:15
【问题描述】:

Formik 文档说

https://jaredpalmer.com/formik/docs/guides/form-submission

要在 Formik 中提交表单,您需要以某种方式关闭提供的 handleSubmit(e) 或 submitForm 道具。当您调用其中任何一个时 方法,Formik 每次都会执行以下(伪代码):

----
Run all field-level validations, validate, and validationSchema asynchronously and deeply merge results
---

我无法理解表单提交过程。 handleSubmit、onSubmit、submitForm 有什么区别。

即使我提供了同步验证功能,验证是否总是异步运行?

以上三个函数中哪个是异步运行的? 他们返回什么?

【问题讨论】:

  • > handleSubmit 可以按原样传递给表单的 onSubmit 事件和preventDefault。 submitForm 不能。

标签: formik


【解决方案1】:

onSubmit - 它是form 组件的原生事件道具。与你的问题无关


我没有用过Formik。但是如果我们看一下他们的代码:https://github.com/jaredpalmer/formik/blob/26c4f8627a5ecfd81ec2196c7a9687b3f39f2836/packages/formik/src/Formik.tsx#L740

submitForm - 更底层的函数,它返回 Promise,之后你可以使用结果。 handleSubmit - 内部调用submitForm,如果内部发生错误,则处理所有错误,不返回任何内容。 (https://github.com/jaredpalmer/formik/blob/26c4f8627a5ecfd81ec2196c7a9687b3f39f2836/packages/formik/src/Formik.tsx#L833)

这两个函数都是异步的,因为它们用useEventCallback 包装。

默认情况下,验证始终会在您触发任何事件 submitFormhandleSubmit 之后进行。您可以自己编写什么类型的验证同步或异步取决于第一个 validate 示例 (https://github.com/jaredpalmer/formik/blob/26c4f8627a5ecfd81ec2196c7a9687b3f39f2836/docs/guides/validation.md#validate)

验证运行时的方法列表,或者您如何触发它: https://github.com/jaredpalmer/formik/blob/26c4f8627a5ecfd81ec2196c7a9687b3f39f2836/docs/guides/validation.md#validate

【讨论】:

    【解决方案2】:

    https://github.com/jaredpalmer/formik/issues/1027

    “HandleSubmit 可以按原样传递给表单的 onSubmit 事件,而 preventDefault.submitForm 不能。”

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2018-09-06
      • 2023-01-24
      • 2019-11-01
      • 2020-05-01
      • 2023-03-21
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多