首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使此Formik表单与自定义按钮一起工作?我无法将值获取到handleSubmit

Formik是一个用于构建表单的React库,它提供了一种简化表单处理的方式。要使Formik表单与自定义按钮一起工作,你可以按照以下步骤进行操作:

  1. 首先,确保你已经安装了Formik库。你可以使用以下命令进行安装:
代码语言:txt
复制
npm install formik
  1. 在你的代码中导入Formik和相关的表单组件:
代码语言:txt
复制
import { Formik, Form, Field, ErrorMessage } from 'formik';
  1. 创建一个包含表单字段和验证规则的初始表单值对象。例如:
代码语言:txt
复制
const initialValues = {
  name: '',
  email: '',
  password: ''
};
  1. 创建一个验证函数,用于验证表单字段的值。例如:
代码语言:txt
复制
const validate = (values) => {
  const errors = {};

  if (!values.name) {
    errors.name = 'Required';
  }

  if (!values.email) {
    errors.email = 'Required';
  } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email)) {
    errors.email = 'Invalid email address';
  }

  if (!values.password) {
    errors.password = 'Required';
  }

  return errors;
};
  1. 创建一个处理表单提交的函数。在这个函数中,你可以获取表单字段的值并执行相应的操作。例如:
代码语言:txt
复制
const handleSubmit = (values) => {
  console.log(values);
  // 执行其他操作
};
  1. 在你的组件中使用Formik组件包裹表单,并将上述创建的函数和对象传递给Formik组件的相应属性。例如:
代码语言:txt
复制
<Formik
  initialValues={initialValues}
  validate={validate}
  onSubmit={handleSubmit}
>
  <Form>
    <div>
      <label htmlFor="name">Name</label>
      <Field type="text" id="name" name="name" />
      <ErrorMessage name="name" component="div" />
    </div>

    <div>
      <label htmlFor="email">Email</label>
      <Field type="email" id="email" name="email" />
      <ErrorMessage name="email" component="div" />
    </div>

    <div>
      <label htmlFor="password">Password</label>
      <Field type="password" id="password" name="password" />
      <ErrorMessage name="password" component="div" />
    </div>

    <button type="submit">Submit</button>
  </Form>
</Formik>

在上述代码中,<Formik>组件包裹了整个表单,initialValues属性设置了初始表单值,validate属性设置了验证函数,onSubmit属性设置了提交处理函数。<Form>组件定义了表单的结构,<Field>组件定义了表单字段,<ErrorMessage>组件用于显示验证错误信息。

当用户点击提交按钮时,Formik会自动执行验证函数并调用提交处理函数。你可以在提交处理函数中获取表单字段的值,并执行相应的操作。

关于Formik的更多信息和用法,请参考腾讯云的相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2023 React 生态系统,以及我的一些吐槽……

它们通常还需要对该数据进行更新、将更新发送到服务器,并使客户端上的缓存数据与服务器上的数据保持同步。...UI 无关的,RTK Query 的功能可以与任何 UI 层一起使用 API 端点是预先定义的,包括如何从参数生成查询参数和将响应转换为缓存的方式 RTK Query 还可以生成封装整个数据获取过程的...Formik 是一个小型库,可以帮助您解决以下三个最令人讨厌的问题: 将值放入和取出表单状态 验证和错误消息 处理表单提交 通过将所有这些放在一个地方,Formik 可以让事情井然有序,使得测试、重构和理解您的表单变得轻而易举...我(@jaredpalmer)在与 @eonwhite 一起构建一个大型内部管理仪表板时编写了 Formik。...如果你需要做任何特殊的操作,与表单进行交互就变得非常痛苦! 因此,React 做了它最擅长的事情,将实现的工作交给了我们。事实上,这正是我喜欢 React 的原因!

78630
  • 通过三个实例掌握如何使用 TypeScript 泛型创建可重用的 React 组件

    市面上已经有很多关于 TypeScript 泛型的文章和教程,所以本文将聚焦于如何在 React 组件中使用泛型,让你的组件变得更加灵活和可重用。...渲染函数将字符串转换为大写,并且 TypeScript 确保了在 render 属性中进行的操作是对字符串类型数据有效的。 使用自定义类型的数据 现在我们用一个自定义类型的数据来使用泛型组件。...尽管在实际项目中我们通常会使用像 Formik 或 react-hook-form 这样的库来处理表单,但为了演示泛型的强大之处,我们将从头开始创建一个简单的表单组件。...最后,我们使用通用表单组件,并指定具体的表单字段和初始值。...别忘了关注我的公众号「前端达人」,获取更多有趣的技术文章和实用的开发技巧。期待与你分享更多的编程知识,我们下期再见!

    26310

    redux-form的学习笔记二--实现表单的同步验证

    (注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-form...在点击清空按钮时,调用reset()方法清空所有输入框中的内容 首先附上form.js的代码:(这份展示一共两份代码:index.js和form.js,index.js的内容请看上一篇博客) import...handleSubmit等自带的属性以props的形式传入SyncValidationForm中,使他“增强”了,是不是和connect(...)(...)很相似呢?...props ..... } 你就在SyncValidationForm中取到了这些属性值 关于handleSubmit,pristine,reset和submitting的作用我这里简单介绍一下...(即上文提到的保存表单数据的对象),dispatch和props(传递给自定义表单组件的属性) pristine是一个布尔型的值,如果表单初始化后尚未输入值,为true,否则为false,当你向表单中第一个输入框中输入值的时候

    1.9K50

    React 中非受控和受控的组件

    我们可以把两者结合起来,使 React 的 state 成为“唯一数据源”。渲染表单的 React 组件还控制着用户输入过程中表单发生的操作。...被 React 以这种方式控制取值的表单输入元素就叫做“受控组件”。 让我们看以下示例以更好地理解此概念。...单击提交按钮时,其值将记录在控制台中。... 不受控制组件的限制 无即时字段验证 无法有条件地禁用提交按钮 无法强制执行输入格式 单个数据没有多个输入 无动态输入 小结 总体而言,非受控组件可以在必要时使用或比受控组件更有效...若要使用非受控制的组件,可以使用 ref 直接访问 DOM 值。对于受控组件,我们将表单数据值存储在 React 组件的状态属性中。

    2.4K20

    React面试八股文(第一期)

    主要解决的问题: 单纯的Redux只是一个状态机,是没有UI呈现的,react- redux作用是将Redux的状态机和React的UI呈现绑定在一起,当你dispatch action改变state的时候...受控组件更新state的流程:可以通过初始state中设置表单的默认值每当表单的值发生变化时,调用onChange事件处理器事件处理器通过事件对象e拿到改变后的状态,并更新组件的state一旦通过setState...方法更新state,就会触发视图的重新渲染,完成表单组件的更新受控组件缺陷: 表单元素的值都是由React组件进行管理,当有多个输入框,或者多个这种组件时,如果想同时获取到全部的值就必须每个都要编写事件处理函数...(2)非受控组件 如果一个表单组件没有value props(单选和复选按钮对应的是checked props)时,就可以称为非受控组件。在非受控组件中,可以使用一个ref来从DOM获得表单值。...当调用setState时,React render 是如何工作的?咱们可以将"render"分为两个步骤:虚拟 DOM 渲染:当render方法被调用时,它返回一个新的组件的虚拟 DOM 结构。

    3.1K30

    高级前端常考react面试题指南_2023-05-19

    经常被误解的只有在类组件中才能使用 refs,但是refs也可以通过利用 JS 中的闭包与函数组件一起使用。...通过在 shouldComponentUpdate方法中返回 false, React将让当前组件及其所有子组件保持与当前组件状态相同。...如果将HTML中的表单元素( input、 select、 textarea等)添加到组件中,当用户与表单发生交互时,就涉及表单数据存储问题。...根据表单数据的存储位置,将组件分成约東性组件和非约東性组件。...表单如何呈现由表单元素自身决定。如下所示,表单的值并没有存储在组件的状态中,而是存储在表单元素中,当要修改表单数据时,直接输入表单即可。有时也可以获取元素,再手动修改它的值。

    1.8K31

    微信小程序-如何获取用户表单控件中的值

    ,然后提交给后端处理 那么在小程序当中有哪些方式可以获取到表单中的值呢,又怎么通过非表单提交的方式获取用户输入框中的值呢 换言之,若提交按钮在form之外,又如何实现表单的提交呢 在小程序中有两种方式可以获取表单的值...important; } 在上面的示例代码中,你会发现当有多个radio,多个checkbox时,它会被包裹在radio-group,checkbox-group中,不然是无法获取到控件中的具体数值的...拿到表单中各个表单组件的值,代码量少,简单 缺点: 处于form表单之外的其他表单控件值是无法拿到的,button按钮页必须要在form内,并且写法固定 下面介绍一种非表单提交方式,也就是不依赖form...,同样也可以获取到表单组件的各个数值 这种应用场景在小程序中是很常见的,表单提交数据,不一定就非得是button按钮的方式,只要能拿到表单组件中的值,就达到目的了的 非表单方式获取表单组件的值 下面是实例效果...-- 此处并非用的button按钮,照样可以提交表单数据 --> handleSubmit">提交</

    7.2K11

    20道高频React面试题(附答案)

    经常被误解的只有在类组件中才能使用 refs,但是refs也可以通过利用 JS 中的闭包与函数组件一起使用。...将页面的状态抽象为JS对象的形式,配合不同的渲染工具,使跨平台渲染成为可能。...(2)使用useState时候,使用push,pop,splice等直接更改数组对象的坑使用push直接更改数组无法获取到新值,应该采用析构方式,但是在class里面不会有这个问题。...方法更新state,就会触发视图的重新渲染,完成表单组件的更新受控组件缺陷: 表单元素的值都是由React组件进行管理,当有多个输入框,或者多个这种组件时,如果想同时获取到全部的值就必须每个都要编写事件处理函数...(2)非受控组件 如果一个表单组件没有value props(单选和复选按钮对应的是checked props)时,就可以称为非受控组件。在非受控组件中,可以使用一个ref来从DOM获得表单值。

    1.8K10

    40道ReactJS 面试问题及答案

    它旨在使 React 应用程序更快、更流畅,特别是对于具有大量更新的复杂应用程序。 React Fiber 的工作原理是将协调过程分解为更小的工作单元,称为纤维。...输入值由 DOM 管理,通常在需要时使用 ref 来访问输入值。 当您想要将 React 与非 React 代码或库集成,或者当您需要优化大型表单的性能时,不受控制的组件非常有用。...受控组件:表单数据由 React 组件(而不是 DOM)处理,方法是将输入值存储在状态中,并在输入更改时更新状态。 输入值由 React 状态控制,输入的更改通过事件处理程序进行处理,从而更新状态。...最后,我们断言使用正确的表单数据调用了handleSubmit 函数。 快照测试:快照测试是一种捕获组件输出“快照”并将其与先前存储的快照进行比较的方法。 使用 Jest 创建和维护组件输出的快照。...复合组件:复合组件是一种模式,其中一组组件一起工作以形成更高级别的组件。组中的每个组件都维护自己的状态和行为,但它们一起工作以实现共同的目标。示例包括选项卡式界面、折叠式菜单和表单控件。

    51610

    前端实用技巧 | 自定义React Hook实战指南,轻松搞定自定义React Hook设计

    过去一年,我阅读了众多技术书籍,但是,纸上得来终觉浅,所以我一直纠结如何将看到的转化为用到的,并能沉淀成可传播的。新的一年,与其纠结过去,不如行在当下。「前端使用技巧」,这个系列是必不可少的。...顺应时代浪潮,我还准备在朝着智能化方向迈进,同时探索如何利用新兴技术构建更流畅、更智能、更具吸引力的用户界面。日常的实际开发中,组件化思想必不可少。...今天主要分享,我是如何实现自定义React Hook的,以及自定义React Hook具体有哪些适用场景。二、什么是自定义React Hook?...通过自定义Hook,开发者可以将组件中的逻辑提取出来,形成一个独立的函数,从而在多个组件中复用这些逻辑。自定义Hook的核心思想是将状态逻辑与UI分离,使得状态管理更加清晰和可维护。...useState用于管理表单的值和错误信息。handleChange用于更新表单字段的值。handleSubmit用于处理表单提交,并在提交前进行验证。

    17420

    测试需求平台11-产品管理交互Acro必要组件掌握

    ✍ 此系列为整理分享已完结入门搭建《TPM提测平台》系列的迭代版,拥抱Vue3.0将前端框架替换成字节最新开源的arco.design,其中约60%重构和20%新增内容,定位为从 0-1手把手实现简单的测试平台开发教程...组成的表单,在提交时候获取表单项值 例子代码参考如下: 为表单主包包裹, :mode绑定组值对象 为子项,filed(数据项必填)表单元素在数据对象中的path..., label标签的文本 @submit 表单提交时触发事件,参数data 等同于mode绑定form集合值 更多API https://arco.design/vue/component/form#API...https://arco.design/vue/component/button#API 按钮类型 此组件是最基本的组件之一,几乎页面交互的事件动作都要通过按钮完成,在Arco样式除了默认按钮,还包含但不限于如下类型...在只设置图标时,按钮的宽高相等 样式按钮 可以指定大小、形状和状态、线性、文本等 组合按钮 通过 组件使按钮以组合方式出现。

    30420

    【译】开始学习React - 概览和演示教程

    安装 有几种安装React的方法,我将向你展示两种,以便你更好地了解它地工作方式。...Props是将现有数据传递到React组件的有效方法,但是该组件无法更改属性 - 它们是只读的。在下一节中,我们将学习如何使用state来进一步控制React中的数据处理。...太棒了,现在我们有了删除按钮,我们可以通过删除字符来修改状态。 ? 我删除了Mac数据。 现在,你应该了解如何初始化状态以及如何修改状态了。...) } 最后,我们将添加一个提交按钮以提交表单。...如果你不熟悉什么是API或者如何连接API,我建议你阅读下如何使用JavaScript连接API这篇文章,它将引导你了解什么是API以及如何将它们与原始的JavaScript一起使用。

    11.2K20

    美团前端一面必会react面试题4

    拿到这两个值之后,我们就可以通过一些对比逻辑来决定是否有 re-render(重渲染)的必要了。如果该函数的返回值为 false,则生命周期终止,反之继续;注意:此方法仅作为性能优化的方式而存在。...方法更新state,就会触发视图的重新渲染,完成表单组件的更新受控组件缺陷: 表单元素的值都是由React组件进行管理,当有多个输入框,或者多个这种组件时,如果想同时获取到全部的值就必须每个都要编写事件处理函数...(2)非受控组件 如果一个表单组件没有value props(单选和复选按钮对应的是checked props)时,就可以称为非受控组件。在非受控组件中,可以使用一个ref来从DOM获得表单值。...React 将 render 函数返回的虚拟 DOM 树与老的进行比较,从而确定 DOM 要不要更新、怎么更新。...与组件上的数据无关的加载,也可以在constructor里做,但constructor是做组件state初绐化工作,并不是做加载数据这工作的,constructor里也不能setState,还有加载的时间太长或者出错

    3K30

    2021前端react面试题汇总

    同时,这也是很多人将 React 与状态管理库结合使用的原因之一。但是,这往往会引入了很多抽象概念,需要你在不同的文件之间来回切换,使得复用变得更加困难。...受控组件更新state的流程: 可以通过初始state中设置表单的默认值 每当表单的值发生变化时,调用onChange事件处理器 事件处理器通过事件对象e拿到改变后的状态,并更新组件的state 一旦通过...setState方法更新state,就会触发视图的重新渲染,完成表单组件的更新 受控组件缺陷: 表单元素的值都是由React组件进行管理,当有多个输入框,或者多个这种组件时,如果想同时获取到全部的值就必须每个都要编写事件处理函数...(2)非受控组件 如果一个表单组件没有value props(单选和复选按钮对应的是checked props)时,就可以称为非受控组件。在非受控组件中,可以使用一个ref来从DOM获得表单值。...当 ref 属性被用于一个自定义的类组件时,ref 对象将接收该组件已挂载的实例作为他的 current。 当在父组件中需要访问子组件中的 ref 时可使用传递 Refs 或回调 Refs。 9.

    2K20

    2021前端react面试题汇总

    同时,这也是很多人将 React 与状态管理库结合使用的原因之一。但是,这往往会引入了很多抽象概念,需要你在不同的文件之间来回切换,使得复用变得更加困难。...受控组件更新state的流程: 可以通过初始state中设置表单的默认值 每当表单的值发生变化时,调用onChange事件处理器 事件处理器通过事件对象e拿到改变后的状态,并更新组件的state 一旦通过...setState方法更新state,就会触发视图的重新渲染,完成表单组件的更新 受控组件缺陷: 表单元素的值都是由React组件进行管理,当有多个输入框,或者多个这种组件时,如果想同时获取到全部的值就必须每个都要编写事件处理函数...(2)非受控组件 如果一个表单组件没有value props(单选和复选按钮对应的是checked props)时,就可以称为非受控组件。在非受控组件中,可以使用一个ref来从DOM获得表单值。...当 ref 属性被用于一个自定义的类组件时,ref 对象将接收该组件已挂载的实例作为他的 current。 当在父组件中需要访问子组件中的 ref 时可使用传递 Refs 或回调 Refs。 9.

    2.3K00

    react学习

    按钮,表单,对话框,甚至整个屏幕的内容:在React应用程序中,这些通常都会以组件的形式表示。 提取组件 将组件拆分为更小的组件。...表单 在React里,HTML表单元素的工作方式和其他的DOM元素有些不同,这是因为表单元素通常会保持一些内部的state。...type="submit" value="提交" /> 此表单具有默认的HTML表单行为,即在用户提交表单后浏览到新页面。...我们可以把两者结合起来,使React的state成为“唯一数据源”。渲染表单的React组件还控制着用户输入过程中表单发生的操作。被React以这种方式控制取值的表单输入元素就叫“受控组件”。...当你将之前的代码库转换为React或将React应用程序与飞React库集成时,这可能会令人厌烦。在这些情况下,你可能希望使用非受控组件,这是实现输入表单的另一种方式。

    4.4K20
    领券