-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Expand file tree
/
Copy pathValidateFieldWithSchema.js
More file actions
85 lines (81 loc) · 2.21 KB
/
ValidateFieldWithSchema.js
File metadata and controls
85 lines (81 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import React from 'react';
import { Formik, Field, Form, ErrorMessage } from 'formik';
import { object, string } from 'yup';
import { Debug } from './Debug';
const validationSchema = object().shape({
email: string().email('Invalid email').required('Field is required'),
username: string()
.min(4, 'Must be at least 4 characters')
.required('Field is required'),
});
const ValidateFieldWithSchema = () => (
<div>
<h1>Pick a username</h1>
<Formik
initialValues={{ username: '', email: '' }}
validationSchema={validationSchema}
onSubmit={values => {
alert(JSON.stringify(values, null, 2));
}}
render={({
errors,
touched,
setFieldValue,
setFieldTouched,
validateField,
validateForm,
}) => (
<Form>
<label htmlFor="username">Username</label>
<div>
<Field name="username" type="text" placeholder="Username" />
<ErrorMessage name="username" />
</div>
<br />
<div>
<Field name="email" type="text" placeholder="Email" />
<ErrorMessage name="email" />
</div>
<div>
<div>username field actions</div>
<button
type="button"
onClick={() => {
setFieldTouched('username', true, true);
}}
>
setFieldTouched
</button>
<button
type="button"
onClick={() => {
setFieldValue('username', '', true);
}}
>
setFieldValue
</button>
<button
type="button"
onClick={() => {
validateField('username');
}}
>
validateField
</button>
<br />
</div>
<br />
<div>
<div>Form actions</div>
<button type="button" onClick={validateForm}>
validate form
</button>
<button type="submit">Submit</button>
</div>
<Debug />
</Form>
)}
/>
</div>
);
export default ValidateFieldWithSchema;