• React——form的校验和验证规则(使用formik,yup)


    React在进行form校验时,有两种方案

    1. 使用组件库进行from表单校验,但是React中组件库用起来比较费力。
    2. 使用原生方法写,这里借助  formik 和  yup进行使用

     一,formik的使用

    官方文档https://formik.org/docs/tutorial#validation

    1. 首先进行安装依赖 

    yarn add  formik

        2.使用

    •  先导入

    import { useFormik } from 'formik';

    • 进行初始化 

    initialValues:初始化 输入框的密码和账号 

    onSubmit:当点击提交按钮时,调用这个钩子,拿到输入框的vaule值

     这里打印一下 formik可以看到有很多钩子函数可以使用

     

    1. const formik = useFormik({
    2. initialValues: {
    3. mobile: '',
    4. code: ''
    5. },
    6. validate,
    7. onSubmit: values => {
    8. // 拿到输入框的值
    9. console.log(values);
    10. },
    11. });
    12. console.log(formik);
    •  在from表单中绑定这些钩子函数,会自动调用和受控

     

    •   formik中提供了校验规则,但是还是要自己手写,这里了解一下

     进行校验结果的控制

    •     这里看看全部代码
    1. import React from 'react'
    2. import NavBar from '../NavBar/NavBar'
    3. import style from './Login.module.scss'
    4. import Input from '../Input/input.js'
    5. // 导入表单验证的formik
    6. import { useFormik } from 'formik';
    7. //导入校验验证规则yup
    8. //import * as yup from 'yup';
    9. const validate = values => {
    10. const error = {}
    11. if (!values.mobile) {
    12. error.mobile = '手机号不能为空'
    13. }
    14. if (!values.code) {
    15. error.code = '验证码不能为空'
    16. }
    17. return error
    18. }
    19. export default function Login() {
    20. const formik = useFormik({
    21. initialValues: {
    22. mobile: '',
    23. code: ''
    24. },
    25. validate,
    26. onSubmit: values => {
    27. // 拿到输入框的值
    28. console.log(values);
    29. },
    30. });
    31. console.log(formik);
    32. return (
    33. <div className={style.root}>
    34. <NavBar>登录NavBar>
    35. <div className='content'>
    36. <h3>短信登录h3>
    37. <form onSubmit={formik.handleSubmit}>
    38. <div className='input-item'>
    39. <Input
    40. name='mobile'
    41. placeholder='请输入手机号'
    42. value={formik.values.mobile}
    43. onChange={formik.handleChange}
    44. onBlur={formik.handleBlur}
    45. />
    46. {formik.touched.mobile && formik.errors.mobile ? < div className='validate'>{formik.errors.mobile}div> : null}
    47. <div className='input-item'>
    48. <Input
    49. placeholder='请输入验证码'
    50. extra='获取验证码'
    51. name='code'
    52. onChange={formik.handleChange}
    53. onBlur={formik.handleBlur}
    54. value={formik.values.code} />
    55. {formik.touched.code && formik.errorscode ? <div className='validate'>{formik.errors.code}div> : null}
    56. div>
    57. <button type='submit' className='login-btn'>登录button>
    58. div>
    59. form>
  • )
  • }
  • 二,yup

    上面的校验规则看起来不是很方便,使用yup会方便很多,可以去官网看看,非常简单。相信都可以看明白

    yup:https://www.npmjs.com/package/yup

     

  • 相关阅读:
    java基于ssm的在线答疑考试系统
    什么是高可用,如何实现高可用
    C++学习——内联函数详解
    win10使用VMware启动虚拟机如CentOS7,外部机器蓝屏重启
    DP58 红和蓝
    传统用户管理方案有哪些利弊?
    【C++ Primer Plus学习记录】数组的替代品vector、array
    【MindSpore易点通】数据处理之NumPy练习--初级篇
    Firefox 119 正式发布
    el-table 列分页
  • 原文地址:https://blog.csdn.net/qq_56989560/article/details/126059831