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

如何使用Formik验证字段onBlur和其他字段onChange?

若要在React中使用Formik验证字段的onBlur事件和其他字段的onChange事件,你需要遵循以下步骤:

  1. 首先,请确保已经安装并导入Formik库:
代码语言:javascript
复制
npm install formik --save
  1. 导入Formik组件和验证库(例如Yup):
代码语言:javascript
复制
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';
  1. 创建一个Yup验证模式,用于定义字段的验证规则:
代码语言:javascript
复制
const validationSchema = Yup.object({
  firstName: Yup.string()
    .required('Required')
    .min(2, 'Minimum 2 characters'),
  lastName: Yup.string()
    .required('Required')
    .min(2, 'Minimum 2 characters'),
});
  1. 使用Formik组件创建一个表单,为onChange和onBlur事件添加处理程序:
代码语言:javascript
复制
export const MyForm = () => {
  const handleSubmit = (values, { setSubmitting }) => {
    setTimeout(() => {
      alert(JSON.stringify(values, null, 2));
      setSubmitting(false);
    }, 400);
  };

  return (
    <Formik
      initialValues={{ firstName: '', lastName: '' }}
      validationSchema={validationSchema}
      onSubmit={handleSubmit}
    >
      {({ isSubmitting, errors, touched, handleChange, handleBlur }) => (
        <Form>
          <label htmlFor="firstName">First Name</label>
          <Field
            type="text"
            name="firstName"
            onChange={handleChange}
            onBlur={handleBlur}
            placeholder="First Name"
          />
          <ErrorMessage name="firstName" component="div" />

          <label htmlFor="lastName">Last Name</label>
          <Field
            type="text"
            name="lastName"
            onChange={handleChange}
            onBlur={handleBlur}
            placeholder="Last Name"
          />
          <ErrorMessage name="lastName" component="div" />

          <button type="submit" disabled={isSubmitting}>
            Submit
          </button>
        </Form>
      )}
    </Formik>
  );
};

在上述示例中,我们创建了一个包含两个字段(firstName和lastName)的简单表单。我们使用了Yup验证模式来定义验证规则。接着,我们使用handleChangehandleBlur事件处理程序来处理onChange和onBlur事件。最后,我们使用ErrorMessage组件来显示验证错误信息。

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

相关·内容

MySQL 使用规范 —— 如何建好字段和索引

❞ 本文的宗旨在于通过简单干净实践的方式教会读者,如何更好地使用 MySQL 数据库。...这包括;库表创建规范、字段的创建规范、索引的创建规范以及SQL使用的相关规范,通过这些内容的讲解,让读者更好使用 MySQL 数据库,创建出符合规范的表和字段以及建出合适的索引。...二、库表规范 为了能让读者更加清晰地看到这些相关规范都是如何体现的,小傅哥这里准备了个大图,把库表字段和规范全部整合在一起,方便学习使用。...如下; 如上所列规范包括:建表相关规范、字段相关规范、索引相关规范、使用相关规范。 1. 建表相关规范 库名、表名、字段名,使用小写和下划线 _ 分割 库名、表名、字段名,不超过12个字符。...LOCK TABLES语句:当使用LOCK TABLES语句手动锁定表时,会对被锁定的表使用表级别的锁,阻塞其他会话对该表的读写操作。

1K30

如何“爆破检测”加密密码字段和存在验证码的Web系统

本文将结合在检测过程中遇到的问题一步步地讲解如何突破障碍达到检测的目的,各位读者可以举一反三进行其他系统的爆破测试。...二、寻找一个简单的爆破点 A平台算是公司内部的一个通用平台,所以其的账号密码也能在其他系统上登录,但是这些系统多多少少都做了一定的防御,基本都具有密码次数过多封ip、验证码、密码字段加密、请求间隔时间检测等的爆破防御...,故本文选择了一个仅仅拥有密码字段加密和设置验证码(验证码干扰量最少)的A平台,如果读者非不得已要突破密码次数过多封ip的防御,可以在本文的基础上加入代理池,如何筛选出有效的代理池还请自行研究。...Password是经过前端加密了,可想而知要爆破这个系统,验证码识别和如何生成这个密文是重点突破点。...三、对验证码的机器识别 一开始,本文使用python的pytesseract进行了对A平台的验证码进行测试,删除了干扰线和灰化后,依然无法对该验证码图片正确识别,其原因是验证码的字体稍微做了变形。

2.7K20
  • Formik:让用户体验更加出色的表单解决方案

    它提供了一系列功能和特性,使创建、管理和验证表单变得更加容易, 如: 易于使用的 API:Formik 提供了一个简洁直观的 API,让你能够快速定义和操作表单字段。...高效的验证:Formik 内置了强大的验证功能,可以轻松地定义字段验证规则,并在用户输入时实时反馈错误信息。...与其他库集成:Formik 可以与其他流行的库和工具(如 Yup、React Hook Form)集成,提供更多的扩展性和灵活性。...可以使用以下代码:const formik = useFormik();。 配置表单字段:使用 Formik 的 Field 组件来定义表单字段。...Field 组件:用于渲染表单字段的组件,它接受表单字段的名称、类型和验证规则等参数,并根据这些参数渲染相应的表单字段。

    35110

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

    首先,服务器状态具有以下特点: 以你无法控制或拥有的远程位置持久存储 需要使用异步 API 进行获取和更新 暗示共享所有权,并且可能被其他人在你不知情的情况下更改 如果不小心处理,可能会在应用程序中变得...UI 层一起使用 API 端点是预先定义的,包括如何从参数生成查询参数和将响应转换为缓存的方式 RTK Query 还可以生成封装整个数据获取过程的 React hooks,为组件提供数据和 isLoading...字段,并在组件挂载和卸载时管理缓存数据的生命周期 RTK Query 提供了“缓存条目生命周期”选项,可以通过 WebSocket 消息流式传输缓存更新,以在获取初始数据后使用 我们有从 OpenAPI...Formik 是一个小型库,可以帮助您解决以下三个最令人讨厌的问题: 将值放入和取出表单状态 验证和错误消息 处理表单提交 通过将所有这些放在一个地方,Formik 可以让事情井然有序,使得测试、重构和理解您的表单变得轻而易举...格式化流水线、解析流水线、内置验证,根据状态向元素添加和移除类名...这一切都很棒! 直到你需要做一些不符合 AngularJS 设计思路的事情。

    78530

    React 中 getDerivedStateFromProps 的三个场景

    根据应用场景的不同, getDerivedStateFromProps的使用方式也不同。 一、半受控组件 虽然 React 官方不推荐半受控组件,当然从 API 设计和维护的角度考虑也是不推荐的。...注意,在这里我们去判断 props上的字段是不是我们要的类型(在这里是 string)而不是判断 props上有没有这个字段,因为用户可能封装了一层组件,导致 props上有这个字段,但是它的值是 undefined...= e => { this.setState({ value: e.target.value, }); }; onBlur = e => { this.props.onChange...={this.onChange} onBlur={this.onBlur} /> ); } } 而上层组件更新和组件本身 setState都会触发 getDerivedStateFromProps...={this.onChange} onBlur={this.onBlur} /> ); } } 三、记忆 记忆(memorize)是一种简单常见的优化方式,通过脏检查两次传入的值是不是同一个来记忆结果

    2.3K10

    表单验证和正则表达式

    第一部分:form表单基础 表单验证使用onblur还是onchange....form表单常见需要验证的字段: Message(字符串),ZIP code(邮政编码),日期(date),Phone Number(电话号码),Email(电子邮件),smart Phone Number...onchange事件不可以用于验证表单域的值是否为空。onblur事件适合触发数据验证。如何处理用户复制/粘贴文本到表单域中?...(onblur和onfocus是相反事件) onblur事件:表单域失去焦点时触发。 onfocus事件:表单元素或表单域获得输入的焦点时触发。...alert框和弹出式广告(pop-up ad) alert框会阻止用户当前进行的工作,强制用户按下确定按钮之后才能继续下一步操作。这种设计具有分裂性,所以alert框不适合用在数据验证的提示。

    2K50

    React 组件优化

    使用时需要先下载: npm install formik --save Formik 库可以与 yup 库一块使用,库的作者也推荐搭配使用,yup 是一个用于验证字段的库,它的用法类似于 React 中的...yup 库使用之前也需要先下载。 用法 下面写个例子,一个表单,我们需要表单做验证,验证不通过就提示用户为什么不对。...需要验证的字段: nickname 昵称,最少 1 位,首尾不能有空格符,最多 30 位; email 邮箱,需要符合邮箱格式; password 密码,最小 6 位,最大 30 位; password...Formik /> 组件比较复杂,在构建 Formik 表单程序时,Formik 和下面它的几个属性是需要设置的: initialValues 接收一个对象,表示初始化的表单控件的值,对象的键应是表单的...使用 Formik + yup 库实现了验证逻辑与组件的解耦,验证逻辑统一由 yup 管理。 相对于 redux-form 库,我觉得 formik 库更好用一些吧。

    7.2K20

    React动态添加标签组件

    ,如果采用一个输入框+逗号分隔的方式,展示起来不是很清晰,一般需要采用标签的方式 需求 可以指定空状态时的标题 设置标签颜色 每个标签的最大长度(字符数) 接口传递的时候的分隔标记(是用逗号,还是其他...) 直接处理表单,不需要二次处理 所以需要传入以下内容给该组件 title:标题 separator:分隔标记 maxLength:最大长度 color:颜色 form,name:处理的表单和对应的字段...和onPressEnter方法 <Input ref={saveInputRef} type="text" size="small" style={{ width: 78 }} value...={inputValue} onChange={(e) => setInputValue(e.target.value)} onBlur={handleInputConfirm} onPressEnter...join(separator) }); }; 编辑状态 当我们处于编辑状态的时候,打开表单后,它原本就有内容了 监听一下表单的内容,如果存在,则使用分隔标记分隔后塞入tags中 useEffect((

    47360

    HTML事件属性--DOM

    .onpageshow 打开一个新页面或者刷新的时候触发 demo查看 相当于onload,加载页面时触发,但是在不同浏览器触发的有所不同 第一次加载页面时,onpageshow在ie浏览器中不触发,其他情况都触发...} 13.onpopstate 当浏览器窗口记录改变时运行的脚本, 14.onredo 当文档执行撤销时触发的事件 二、form事件属性 由html表单内触发的事件,通常使用在form元素中 1.onblur...=myfun()的事件,当input失去焦点的时候产生什么样的效果 demo查看 2.onfocus 元素获得焦点时触发事件,和onblur相反 demo查看 3.onchange 当元素值被改变的时候触发事件...和oninput有相似的地方,都是改变文本内容时触发事件 但是onchange是在input失去焦点时才触发,oninput是立刻触发 demo查看 7.oninvalid oninvalid事件要搭配...required属性来使用 required如果使用该属性,代表必填字段,oninvalid是当元素无效时触发的事件 <input type="text" oninvalid="myfun

    3.8K20

    【基础】input标签输入框内的输入事件详细分析

    1.onblur:元素失去焦点时触发 Onblur 经常用于表单验证,所有主要浏览器都支持 onblur 事件 onblur="myFunction()"> 支持该事件的...3.onfocus:元素获取焦点时触发 当 input 输入框获取焦点时执行,通常也用于 , , 和,所有主要浏览器都支持 onfocus 事件。...onfocusout 事件类似于 onblur 事件。主要的区别是 onblur 事件不支持冒泡。因此,如果你需要查看元素或其子元素是否获取焦点,需要使用 onfocusout 事件。...该事件类似于 onchange 事件。不同之处在于 oninput 事件在元素值发生变化是立即触发, onchange 在元素失去焦点时触发。...另外一点不同是 onchange 事件也可以作用于 和 元素。

    2.7K1913

    React 表格组件设计

    滚动条问题:滚动条的平滑性和响应性需要特别关注。2.2 如何避免错误使用成熟的库:使用如 react-window 或 react-virtualized 等成熟的虚拟滚动库。...输入验证:需要对用户输入进行验证,确保数据的有效性。3.2 如何避免错误使用状态管理库:使用如 useState 或 useReducer 来管理表格状态。...合理使用表单验证:使用如 Formik 或 yup 等库来进行表单验证。3.3 代码示例import React, { useState } from 'react';import '....数据展示:在小屏幕上,可能需要隐藏某些列或使用其他展示方式。4.2 如何避免错误使用媒体查询:使用 CSS 媒体查询来调整表格的布局。...无论是基本表格、虚拟滚动表格、可编辑表格还是响应式表格,都有其特定的应用场景和优化技巧,合理选择和使用这些技术可以显著提升用户体验和开发效率。

    19010

    React 表单输入组件 Input:常见问题、易错点及解决方案

    受控组件的优势 数据一致性:状态和 UI 总是同步的。 验证和格式化:可以在用户输入时进行验证和格式化。 条件渲染:可以根据状态有条件地渲染表单元素。 常见问题 1....如何处理多个输入字段? 当表单中有多个输入字段时,可以使用对象来存储所有字段的状态。...如何处理输入验证? 在用户输入时进行验证可以提高表单的健壮性。...避免方法:使用对象来存储所有字段的状态,并在事件处理函数中正确更新。...通过正确处理多个输入字段、输入验证和格式化,可以提高表单的健壮性和用户体验。同时,避免常见的易错点可以确保表单的正常运行。

    19410

    odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)

    到目前为止,除了类定义和字段声明之外,我们还没有编写任何其他东西。 计算的字段(Computed Fields) 参考: 主题关联文档可查阅 Computed Fields....自然地我们将总面积定义这两者的总和,我们将为此使用计算的字段的概念,即给定字段的值将从其他字段的值中计算出来。 到目前为止,字段已直接存储在数据库中并直接从数据库中检索。字段也可以被计算。...依赖(Dependencies) 计算的字段的值通常取决于计算记录中其他字段的值。ORM期望开发人员使用修饰符depends()指定计算方法上的依赖项。...此外,当“花园”字段未设置时,我们希望花园面积和重置为零,并删除朝向。在这种情况下,给定字段的值会影响其他字段的值。...title': _("Warning"), 'message': ('This option is not supported for Authorize.net')}} 如何使用它们

    3.2K30

    详细剖析|袋鼠云数栈前端框架Antd 3.x 升级 4.x 的踩坑之路

    ● validateTrigger onBlur 时不再修改选中值,且返回 React 原生的 event 对象。...如果你在使用兼容包的 Form 且配置了 validateTrigger 为 onBlur ,请改至 onChange 以做兼容。...元素,基于 top、right、bottom 和 left 的值进行偏移,偏移值不会影响任何其他元素的位置。...● table sorter columnKey ・问题描述 表格中如果要对表格某一字段进行排序需要在 columns item 里设置 sorter 字段,然后在 onChange 里拿到 sorter...// 3.x activeKey={undefined} // 4.x activeKey={null} 总结 该篇文章详细讲解了数栈前端团队如何从 antd3 升级到 antd4 的详细步骤,以及团队在实践过程中发现的一些问题和对应的解决方案

    4.1K30
    领券