EN

Search
Close this search box.

موستانگ، وحشیِ دوست داشتنی

پاسخ داده شد
0
0

Form Validation در recat با استفاده از formik چکونه انجام می شود؟

  • شما باید برای ارسال دیدگاه شوید
پاسخ عالی
2
0

formik گروهی از کامپوننتها و hook ها برای ساخت فرم در react و انجام validation و error messages و form submission در  فرم می باشد.  validation بوسیله آبجکت Yup  و validationSchema انجام می شود.

فرض کنیم که یک فرم داریم که شامل نام کاربری و پسورد می باشد که باید توسط کاربر وارد شود.

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

class App extends React.Component {
    render() {
        return (
            <Formik
                initialValues={{
                   
                    firstName: '',
                                     
                    password: '',
                    confirmPassword: '',
                    acceptTerms: false
                }}
                validationSchema={Yup.object().shape({
                   
                    firstName: Yup.string()
                        .required('First Name is required'),
                   
                    password: Yup.string()
                        .min(6, 'Password must be at least 6 characters')
                        .required('Password is required'),
                    confirmPassword: Yup.string()
                        .oneOf([Yup.ref('password'), null], 'Passwords must match')
                        .required('Confirm Password is required'),
                    acceptTerms: Yup.bool()
                        .oneOf([true], 'Accept Ts & Cs is required')
                })}
                onSubmit={fields => {
                    alert('SUCCESS!! :-)\n\n' + JSON.stringify(fields, null, 4))
                }}
            >
                {({ errors, status, touched }) => (
                    <Form>
                        <div className="form-row">
                            
                           
                            <div className="form-group col-5">
                                <label htmlFor="lastName">Last Name</label>
                                <Field name="lastName" type="text" className={'form-control' + (errors.lastName && touched.lastName ? ' is-invalid' : '')} />
                                <ErrorMessage name="lastName" component="div" className="invalid-feedback" />
                            </div>
                        </div>
                        
                        <div className="form-row">
                            <div className="form-group col">
                                <label htmlFor="password">Password</label>
                                <Field name="password" type="password" className={'form-control' + (errors.password && touched.password ? ' is-invalid' : '')} />
                                <ErrorMessage name="password" component="div" className="invalid-feedback" />
                            </div>
                            <div className="form-group col">
                                <label htmlFor="confirmPassword">Confirm Password</label>
                                <Field name="confirmPassword" type="password" className={'form-control' + (errors.confirmPassword && touched.confirmPassword ? ' is-invalid' : '')} />
                                <ErrorMessage name="confirmPassword" component="div" className="invalid-feedback" />
                            </div>
                        </div>
                       
                        <div className="form-group">
                            <button type="submit" className="btn btn-primary mr-2">Register</button>
                            <button type="reset" className="btn btn-secondary">Reset</button>
                        </div>
                    </Form>
                )}
            </Formik>
        )
    }
}

export { App };

المانهای <Field />  و <ErrorMessage /> در کتابخانه Formik  می باشند که به طور اتوماتیک input ها و error messages را bind می کند.

فایل html فرم بصورت زیر پیاده سازی می شود:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React + Formik  Example</title>

    <!-- bootstrap css -->
    <link href="//netdna.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
    <div class="card m-3">
        <h5 class="card-header">React + Formik Validation Example</h5>
        <div class="card-body">
            <div id="app"></div>
        </div>
    </div>
</body>
</html>

و فایل jsx بصورت زیر انجام می شود. (jsx المان های react را تولید می کند و یک اکستنشن از جاوااسکریپت می باشد).

import React from 'react';
import { render } from 'react-dom';

import { App } from './App';

render(
    <App />,
    document.getElementById('app')
);
  • شما باید برای ارسال دیدگاه شوید
نمایش 1 نتیجه
پاسخ شما
اگر قبلاً حساب کاربری دارید با پر کردن فیلد های زیر یا به عنوان مهمان ارسال کنید.
نام*
ایمیل*
وب سایت