标签: formik

使用Yup验证字符串或数字长度

是否有一个验证特定长度的yup函数?

我试过.min(5).max(5),但我想要的东西,保证数量正好是5个字符(即邮政编码).

javascript reactjs yup formik

13
推荐指数
8
解决办法
1万
查看次数

我如何验证 yup 中对象内的对象?

我正在使用 formik 和 yup 来处理我的表单,我需要验证 formik 在初始值中设置的两个对象:

\n\n
initialValues: {\n  company: { company_name: \'\', cnpj: \'\', fantasy_name: \'\', state_registration: \'\' },\n  user: { email: \'\', password: \'\' }\n},\nvalidationSchema: schema,\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的验证模式:

\n\n
  const schema = Yup.object().shape({\n    company_name: Yup.string().required(\'Informe o nome da filial!\'),\n    cnpj: Yup.string().required(\'Informe o cnpj!\'),\n    email: Yup.string().email(\'Email n\xc3\xa3o possui formato v\xc3\xa1lido\').required(\'Informe o e-mail\'),\n    password: Yup.string().required(\'Informe a senha\')\n  })\n
Run Code Online (Sandbox Code Playgroud)\n\n

我如何才能再增加一个级别(用户/公司)?\n我尝试了类似的操作:

\n\n
company.company_name: Yup.string().required(\'Informe o nome da filial!\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我收到:

\n\n
\n

解析错误:意外的标记,预期为“,”

\n
\n\n

我怎样才能做到这一点?

\n\n

我也尝试过:

\n\n
  const …
Run Code Online (Sandbox Code Playgroud)

reactjs yup formik

13
推荐指数
1
解决办法
2万
查看次数

Formik和Material-UI

我正在尝试使用Formik与Material-UI文本字段.像这样:

import TextField from '@material-ui/core/TextField';
import {
  Field,
  FieldProps,
  Form,
  Formik,
  FormikErrors,
  FormikProps
} from 'formik';
import React, { Component } from 'react';

interface IMyFormValues {
  firstName: string;
}

class CreateAgreementForm extends Component<{}> {
  public render() {
    return (
      <div>
        <h1>My Example</h1>
        <Formik
          initialValues={{ firstName: '' }}
          // tslint:disable-next-line:jsx-no-lambda
          onSubmit={(values: IMyFormValues) => alert(JSON.stringify(values))}
          // tslint:disable-next-line:jsx-no-lambda
          validate={(values: IMyFormValues) => {
            const errors: FormikErrors<IMyFormValues> = {};
            if (!values.firstName) {
              errors.firstName = 'Required';
            }
            return errors;
          }}
          // tslint:disable-next-line:jsx-no-lambda
          render={(formikBag: FormikProps<IMyFormValues>) => ( …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs material-ui formik

12
推荐指数
4
解决办法
1万
查看次数

使用 YUP 验证文件存在

我正在使用Yup来验证我的表单。在我的一种形式中,我想验证<input type="file" />一个文件是否存在。

我已经测试过这个(它不起作用):

Yup.object().shape({
  file: Yup.object().shape({
    name: Yup.string().required()
}).required('File required')
Run Code Online (Sandbox Code Playgroud)

我在控制台中有以下错误消息:

file 必须是一种object类型,但最终值是:(null从值转换{})。如果“null”打算作为空值,请确保将架构标记为.nullable()

任何的想法?

reactjs yup formik

12
推荐指数
4
解决办法
1万
查看次数

ReactJS Formik 隐藏字段向服务器发送空值

我是 React 的新手,我正在使用 FormIK,它可以很好地发布表单数据,除非我向其中添加隐藏字段。

<Field type="hidden" className="form-control" name="hiddenField" /> 
Run Code Online (Sandbox Code Playgroud)

当我发布表单时,它会发送隐藏字段的空值我也向 Formik 提供了初始值

<Formik initialValues={{
first_name:'',last_name:'',username:'',email:'',password:'',
password_confirmation:'',distributor:'',phone_number:'',address:'',country:'',
state:'',city:'',zip_code:'',hiddenField:''
}} >
Run Code Online (Sandbox Code Playgroud)

有什么遗漏吗?

reactjs formik

12
推荐指数
2
解决办法
1万
查看次数

Formik,如何重置脏属性

我有多步骤表格申请。在第一页上,用户填写表格。第二页是确认页面,用户可以在其中检查所有数据,或者可以编辑它们,然后返回到第一页。在表单页面上,我禁用了提交按钮,直到它通过所有验证规则

\n
           <Button\n              type="submit"\n              disabled={!(formik.isValid && formik.dirty)}\n              onClick={() => {\n                dispatch(sendSms()).then(() => {\n                  setModal(true);\n                });\n              }}\n            >\n              \xd0\x9f\xd1\x80\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb6\xd0\xb8\xd1\x82\xd1\x8c\n           </Button>\n
Run Code Online (Sandbox Code Playgroud)\n

所以问题是当我返回时,提交按钮被禁用。我需要将脏属性设置为“true”。怎样制作呢?

\n
 <Formik\n    initialValues={formValues || initialValues}\n    validationSchema={validationSchema}\n    enableReinitialize\n    onSubmit={onSubmit}\n    onChange={onSubmit}\n    validateOnMount={true}\n  >\n\nconst onSubmit = (values, submitProps) => {\n  setFormValues(values);\n  submitProps.resetForm();  \n};\n
Run Code Online (Sandbox Code Playgroud)\n

reactjs formik

12
推荐指数
2
解决办法
1万
查看次数

是的,有两个相关领域的验证

我在 reactjs 中使用 formik 进行表单管理,我有一个关于验证的问题。

我有两个字段,一个是选择国家的选择控件,另一个是邮政编码。

在 country 数组中,我们有正则表达式来验证邮政编码,其想法是使用当前所选国家/地区的正则表达式验证输入的邮政编码,有人可以提供有关如何执行此操作的线索。

yup formik

11
推荐指数
5
解决办法
2万
查看次数

是的:对象数组的深度验证

我有一个这样的数据结构:

{
  "subject": "Ah yeah",
  "description": "Jeg siger...",
  "daysOfWeek": [
    {
      "dayOfWeek": "MONDAY",
      "checked": false
    },
    {
      "dayOfWeek": "TUESDAY",
      "checked": false
    },
    {
      "dayOfWeek": "WEDNESDAY",
      "checked": true
    },
    {
      "dayOfWeek": "THURSDAY",
      "checked": false
    },
    {
      "dayOfWeek": "FRIDAY",
      "checked": false
    },
    {
      "dayOfWeek": "SATURDAY",
      "checked": true
    },
    {
      "dayOfWeek": "SUNDAY",
      "checked": true
    }
  ],
  "uuid": "da8f56a2-625f-400d-800d-c975bead0cff",
  "taskSchedules": [],
  "isInitial": false,
  "hasChanged": false
}
Run Code Online (Sandbox Code Playgroud)

daysOfWeek我想确保至少有一个项目有checked: true.

到目前为止,这是我的验证模式(但不起作用):

const taskValidationSchema = Yup.object().shape({
  subject: Yup.string().required('Required'),
  description: Yup.string(),
  daysOfWeek: Yup.array()
    .of( …
Run Code Online (Sandbox Code Playgroud)

yup formik

11
推荐指数
2
解决办法
2万
查看次数

使用 Yup 和 Formik 自动修剪空白

我正在使用在架构上定义的 Formik React Form 和 Yup 验证:

export const Contact = yup.object<IContact>().shape({
  contactName: yup
    .string()
    .trim('The contact name cannot include leading and trailing spaces')
    .strict(true)
    .min(1, 'The contact name needs to be at least 1 char')
    .max(512, 'The contact name cannot exceed 512 char')
    .required('The contact Name is required'),
});
Run Code Online (Sandbox Code Playgroud)

有没有办法让 Yup 修剪空白而不显示消息?那么在提交表单时自动修剪空格?

validation typescript reactjs yup formik

11
推荐指数
1
解决办法
1万
查看次数

如何使用 yup.addMethod() 为国家/地区名称和代码编写自定义架构验证?

我正在尝试yup使用formik. 我的验证似乎有效,但我觉得它太冗长了。

试图使用 的.addMethod()功能yup,但在语法上陷入困境,或者这可能是矫枉过正?

摘要:我想将我的验证转换为使用yup.addMethod().

实际验证:

import * as yup from 'yup'

const countryNameRegex = /[A-Za-z]/g;
const countryCodeRegex = /[a-zA-Z]{2,}/g;
const isRequired = 'Required Field'
const isCorrectFormat = 'The country name may contain only letters'

const countryValidationSchema = yup.object().shape({
  name: yup.string()
    .min(3, `country name must contain at least 3 characters`)
    .matches(
      countryNameRegex,
      {
        message: isCorrectFormat,
        excludeEmptyStrings: true
      }
    )
    .label(`Country Name`)
    .required(isRequired),
  code: yup.string()
    .length(2, `The country code must be …
Run Code Online (Sandbox Code Playgroud)

validation schema reactjs yup formik

11
推荐指数
1
解决办法
8874
查看次数

标签 统计

formik ×10

reactjs ×8

yup ×7

javascript ×2

typescript ×2

validation ×2

material-ui ×1

schema ×1