简体   繁体   English

集成formik-material-ui以进行material-ui样式时,验证发生在onSubmit之前

[英]validation occuring before onSubmit when integrating formik-material-ui for material-ui styling

I want to add material-ui to my formik app. 我想将material-ui添加到我的formik应用程序中。 I am using the formik-material-ui library ( https://github.com/stackworx/formik-material-ui ) to do this. 我正在使用formik-material-ui库( https://github.com/stackworx/formik-material-ui )执行此操作。 However, when i insert the material-ui textfield components into the fields, validation triggers before submitting. 但是,当我将material-ui文本字段组件插入字段时,验证会在提交之前触发。 My hunch is that it is a mapStateToProps problem, but I am not sure how to integrate that into my code as there isn't much documentation on it. 我的直觉是这是一个mapStateToProps问题,但是由于其中没有太多的文档,我不确定如何将其集成到我的代码中。

Any help is much appreciated, thanks! 非常感谢任何帮助,谢谢!

import React from 'react';
import * as Yup from 'yup';
import { Formik, Field, Form} from 'formik';
import { TextField } from 'formik-material-ui'; 

class Post0 extends React.Component {
  render() {
    return (
      <div>
        <Formik
          initialValues={{
            'email': this.props.initValues.email,
            'animal':  this.props.initValues.animal,
          }}   
          validationSchema={Yup.object().shape({
            email: Yup.string()
              .email('Invalid email address')
              .required('Please enter an email address'),
            animal: Yup.string().required('Required'),
          })} 
          onSubmit={(values) => {
            this.props.nextStep(values);   
          }}
          render={({ values, isSubmitting}) => (  
            <Form>
              <Field
                name="email"
                type="email"
                value={values.email}
                component={TextField}
                variant="outlined"
              />
              <Field
                name="animal"
                value={values.animal}
                component={TextField}
                variant="outlined"
              />

              <button type="submit">Submit</button>
            </Form>
          )}
        />
      </div>
    );
  }
}


export default Post0;  

By default with Formik, validation happens when inputs lose focus (ie after onBlur() is triggered by an input). 默认情况下,Formik会在输入失去焦点时(即在输入触发onBlur()之后)进行验证。 Is this what you are talking about? 这是你在说什么吗? You can change this behaviour if you want with with the validateOnBlur setting ( see the Formik documentation ). 如果需要,可以使用validateOnBlur设置更改此行为( 请参见Formik文档 )。

See your example with validateOnBlur set to false here . 请参见此处将 validateOnBlur设置为false示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM