为了账号安全,请及时绑定邮箱和手机立即绑定

Formik 表单未从模态组件提交

Formik 表单未从模态组件提交

翻翻过去那场雪 2023-09-07 16:47:52
在普通页面和模态上有一些表单字段,我希望模态按钮触发提交事件。每当我在模态按钮上使用提交类型=“提交”时,我都没有得到任何响应。但如果我在普通页面按钮中使用它,它就可以工作。请问这是怎么回事,我不能在模态中使用它吗?  <Formik    initialValues={{      productName: "",      productNumber: "",      quantity: 1,      unitCost: 0,      totalCost: 0,      customerName: "",      customerNumber: "",      amount: "",    }}    onSubmit={(data, { setSubmitting }) => {      setSubmitting(true);      setTimeout(() => {        console.log(data);        alert(JSON.stringify(data, null, 2));        setSubmitting(false);      }, 2000);    }}  >    {({      values,      handleBlur,      handleChange,      setFieldValue,      isSubmitting,    }) => (      <Form>        <Box>          <Grid templateColumns="repeat(2, 1fr)" gap={5}>            <Box>              <FormLabel>Product Name:</FormLabel>              <Field                as={Input}                name="productName"                type="text"                placeholder="Product Name:"              />            </Box>            <Box>              <FormLabel>Product Number:</FormLabel>              <Field                as={Input}                name="productNumber"                type="number"                placeholder="Product Number:"              />            </Box>            <Box>              <FormLabel>Quantity:</FormLabel>              <Field                as={Input}                name="quantity"                type="number"                value={values.quantity}                onChange={handleChange}                onBlur={handleBlur}                placeholder="Quantity:"              />            </Box>            <Box>              <FormLabel>Unit Cost:(in Naira)</FormLabel>              <Field                as={Input}                name="unitCost"                type="number"                value={values.unitCost}                onChange={handleChange}                onBlur={handleBlur}                placeholder="Unit Cost:"              />            </Box>
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

我不太明白你到底想要什么,但如果你想触发提交,你可以使用普通按钮。


首先,将submitForm或handleSubmit作为道具与其他的一起传递


 {({

     submitForm or handleSubmit,

      values,

      handleBlur,

      handleChange,

      setFieldValue,

      isSubmitting,

    }) => (


然后在按钮上删除提交类型并添加单击事件处理程序


<Button colorScheme="green" onClick={submitForm // or handleSubmit}>

  Pay Now

</Button>

抱歉,我不知道 100% 哪个会起作用,我已经有一段时间没有使用 React 和 formik 了。


但请记住,当某些事情没有按照您想要的方式进行时,请尝试其他方法来完成它。通常使用事件处理程序手动触发提交


查看完整回答
反对 回复 2023-09-07
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信