react Formik简介

Formik 是一个用于在 React 应用程序中构建和处理表单数据的流行开源库。它提供了许多实用的组件和函数,使在 React 应用程序中处理表单数据变得更加轻松愉快。传统的 React 表单管理方法需要为每个表单字段创建一个 useState() 钩子,为每个字段添加事件监听器,并触发方法以单独更新它们。而 Formik 在幕后处理了所有这些繁琐的操作。我们只需要导入它提供的组件,我们的表单数据就可以轻松使用了。

例子:

import React from "react";
import { Formik, Form, Field, ErrorMessage } from "formik";

function App() {
 return (
   <div className="App">
     <center>
       <h1>Register a new account</h1>
       <Formik>
         {({ isSubmitting }) => (
           <Form>
             <Field
               type="text"
               name="fullname"
               placeholder="Enter your fullname"
             />
             <ErrorMessage name="fullname" component="div" />

             <Field
               type="email"
               name="email"
               placeholder="Enter email address"
             />
             <ErrorMessage name="email" component="div" />

             <Field type="password" name="password" />
             <ErrorMessage name="password" component="div" />

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

export default App;

在上面的代码中,Formik 组件包装了表单,并提供了管理表单状态、处理验证和提交表单的必要上下文。Field 组件定义了每个表单输入,例如 fullname、email 和 password,而 ErrorMessage 组件用于显示每个字段的验证错误。

Formik还可以搭配第三方库Yup进行校验

import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';

function App() {
  const SignupSchema = Yup.object().shape({
    firstName: Yup.string()
      .min(2, 'Too Short!')
      .max(50, 'Too Long!')
      .required('Required'),
    lastName: Yup.string()
      .min(2, 'Too Short!')
      .max(50, 'Too Long!')
      .required('Required'),
    email: Yup.string()
      .email('Invalid email')
      .required('Required'),
  });

  return (
    <div className="App">
      <center>
        <h1>Register a new account</h1>
        <Formik
          initialValues={{
            firstName: '',
            lastName: '',
            email: '',
          }}
          validationSchema={SignupSchema}
          onSubmit={(values) => {
            // Handle form submission
            console.log(values);
          }}
        >
          {({ isSubmitting }) => (
            <Form>
              <Field type="text" name="firstName" placeholder="Enter your first name" />
              <ErrorMessage name="firstName" component="div" />

              <Field type="text" name="lastName" placeholder="Enter your last name" />
              <ErrorMessage name="lastName" component="div" />

              <Field type="email" name="email" placeholder="Enter email address" />
              <ErrorMessage name="email" component="div" />

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

export default App;

相比于Formik原生,使用Yup作为校验更为方便简洁。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值