提交处理

在您想要有多种表单提交类型的情况下,例如,一个表单有一个按钮导航到子表单,另一个按钮处理标准提交,您可以利用 onSubmitMeta 属性和 handleSubmit 函数重载。

基本用法

首先,您必须定义 form.onSubmitMeta 属性的默认状态

tsx
const form = useForm({
  defaultValues: {
    firstName: 'Rick',
  },
  // {} is the default value passed to `onSubmit`'s `meta` property
  onSubmitMeta: {} as { lastName: string },
  onSubmit: async ({ value, meta }) => {
    // Do something with the values passed via handleSubmit
    console.log(`${value.firstName} - ${meta}`)
  },
})
const form = useForm({
  defaultValues: {
    firstName: 'Rick',
  },
  // {} is the default value passed to `onSubmit`'s `meta` property
  onSubmitMeta: {} as { lastName: string },
  onSubmit: async ({ value, meta }) => {
    // Do something with the values passed via handleSubmit
    console.log(`${value.firstName} - ${meta}`)
  },
})

注意:onSubmitMeta 的默认状态是 never,因此如果未提供该属性,并且您尝试在 handleSubmitonSubmit 中访问它,则会报错。

然后,当您调用 onSubmit 时,您可以像这样提供预定义的元数据

tsx
<form
  onSubmit={(e) => {
    e.preventDefault()
    e.stopPropagation()
    form.handleSubmit({
      lastName: 'Astley',
    })
  }}
></form>
<form
  onSubmit={(e) => {
    e.preventDefault()
    e.stopPropagation()
    form.handleSubmit({
      lastName: 'Astley',
    })
  }}
></form>
订阅 Bytes

您的每周 JavaScript 新闻。每周一免费发送给超过 100,000 名开发者。

Bytes

无垃圾邮件。随时取消订阅。