constsleep=ms=>newPromise(resolve=>setTimeout(resolve,ms));constasyncValidate=(values/*, dispatch */)=>{returnsleep(1000).then(()=>{// simulate server latencyif(['john','paul','george','ringo'].includes(values.username)){throw{username: 'That username is taken'};}});};exportdefaultasyncValidate;
importReactfrom'react';import{Field,reduxForm}from'redux-form';importvalidatefrom'./validate';importasyncValidatefrom'./asyncValidate';importrenderFieldfrom'./renderField';constAsyncValidationForm=props=>{const{ handleSubmit, pristine, reset, submitting }=props;return(<formonSubmit={handleSubmit}><Fieldname="username"type="text"component={renderField}label="Username"/><Fieldname="password"type="password"component={renderField}label="Password"/><div><buttontype="submit"disabled={submitting}>Sign Up</button><buttontype="button"disabled={pristine||submitting}onClick={reset}>
Clear Values
</button></div></form>);};exportdefaultreduxForm({form: 'asyncValidation',// a unique identifier for this form
validate,
asyncValidate,asyncBlurFields: ['username'],})(AsyncValidationForm);
Asynchronous Change Validation
exportdefaultreduxForm({form: 'asyncValidation',// a unique identifier for this form
validate,
asyncValidate,asyncChangeFields: ['username']})(AsyncValidationForm)