当前位置: 首页 > 编程笔记 >

用于React.js中表单处理的Formik

云飞翮
2023-03-14
本文向大家介绍用于React.js中表单处理的Formik,包括了用于React.js中表单处理的Formik的使用技巧和注意事项,需要的朋友参考一下

甲酸的目的是消除反应中表单处理的复杂性并使表单提交更简单。

Formic使用yup来验证表单字段,这很容易使用

首先安装甲酸库

npm install –save formic

示例

import React, { Component} from 'react';
import { Formik, FormikProps, Form, Field, ErrorMessage } from 'formik';
export class FormExample extends Component {
   handleSubmit = (values, {
      props = this.props,
      setSubmitting
   }) => {
      setSubmitting(false);
      return;
   }  
   render() {
      return(
         <Formik
            initialValues={{
               first_name: '',
               last_name: ''
            }}
            validate={(values) => {
               let errors = {};  
               if(!values.first_name)
               errors.first_name = "first name Required";
               //check if my values have errors
               return errors;
            }
         }
         onSubmit={this.handleSubmit}
         render={formProps => {
            return(
               <Form>
                  <Field type="text" name="first_name" placeholder="First Name"/>
                  <ErrorMessage name="first_name" />
                  <Field type="text" name="last_name" placeholder="Last Name" />
                  <ErrorMessage name="last_name" />
                  <button type="submit" disabled={formProps.isSubmitting}>
                     Submit Form
                  </button>
               </Form>
            );
         }}
      />);
   }
}

该代码很容易解释。我们有两个字段first_name和last_name。我们正在验证first_name字段并显示错误消息(如果为空)。

注意从formic→Formik,FormikProps,Form,Field,ErrorMessage导入的组件

我们可以使用对formik库有很好支持的yup

const validationSchema = Yup.object({
   first_name: Yup.string("Enter a First Name")
   .required("First Name is required"),
   last_name: Yup.string("Enter your Last Name")
   .last_name("Enter a valid Last Name")
   .required("Last Name is required")
})

我们可以像上面一样使用yup进行验证,并在formik组件上添加验证模式以使其工作。

<Formik
   initialValues={values}
validationSchema={validationSchema}
/>
 类似资料:
  • 表单是让用户与我们的网页应用程序交互的基本元素。Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包。这个包使得定义表单和处理提交容易一些。 Flask-WTF 我们想要使用 Flask-WTF 做的第一件事情(在安装它以后)就是在 myapp.forms 包中定义一个表单。 # ourapp/forms.py

  • 我们已经看到,可以在URL规则中指定http方法。URL映射的函数接收到的表单数据可以以字典对象的形式收集,并将其转发给模板以在相应的网页上呈现它。 在以下示例中,URL => 呈现具有表单的网页(student.html)。填充的数据会提交到触发函数的URL => 中。 函数收集字典对象中中存在的表单数据,并将其发送给result.html 并显示出来。 该模板动态呈现表单数据的HTML表格。

  • 主要内容:在视图中使用表单在Django创建表单,类似于创建一个模型。 在这里,我们只需要从Django的类并继承此类属性表单字段。让我们在myapp文件夹中添加forms.py文件包含我们的应用程序的表单。我们将创建一个登录表单。 myapp/forms.py 由上可见,字段类型可以利用“widget”的参数到HTML渲染; 在我们的例子中,我们要隐藏密码,不会显示。在我们的例子中,想要隐藏密码而不用显示。 日期输入是D

  • 我在处理我的联系方式时遇到了麻烦,虽然是一个简单的联系方式。我花了很多时间试图找出我的代码出了什么问题,但一直没有找到解决办法。我的对象没有接收数据。我有以下例外情况: 执行INSERT INTO联系人(电子邮件、姓名、消息、日期)VALUES时发生异常 (?, ?, ?, ?)'用参数[null, null, null,"2016-09-19 00:08:48"]: SQLSTATE[23000

  • 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理。浏览器中使用 GET 和 POST 方法向服务器提交数据。 GET 方法 GET方法将请求的编码信息添加在网址后面,网址与编码信息通过"?"号分隔。如下所示: http://www.runoob.com/hello?key1=value1&key2=value2 GET方法是浏览器默认传递参数的方法,一些敏感信息,如密码等建议不使用

  • 严格模式下的Vuex,在属于 Vuex 的 state (状态)上使用 v-model时会比较棘手: <input v-model="obj.message"> 假设 obj 计算的属中返回一个对象,在用户输入时,v-model会尝试直接修改obj.message。在严格模式下,因为修改不在Vuex mutation handler中执行,将会抛出一个错误。 用“Vuex思维”去处理是给<inpu

  • 先来看一个表单递交的例子,我们有如下的表单内容,命名成文件login.gtpl(放入当前新建项目的目录里面) <html> <head> <title></title> </head> <body> <form action="/login" method="post"> 用户名:<input type="text" name="username"> 密码:<input type=

  • 当解析器MultipartResolver完成处理时,请求便会像其他请求一样被正常流程处理。首先,创建一个接受文件上传的表单将允许用于直接上传整个表单。编码属性(enctype="multipart/form-data")能让浏览器知道如何对多路上传请求的表单进行编码(encode)。 <html> <head> <title>Upload a file please</t