Я хочу сначала отключить кнопку отправки, когда поля ввода пусты или есть какие-либо ошибки, и включить ее, если не все это, используя formik и yup, я пробовал с грязным и isValid, но он не работает, он остается отключенным, даже когда есть ошибок нет, вот мой компонент:
const validationSchema = Yup.object().shape({
phone: Yup.string()
.required("Required Field")
.min(10, "Must be a 10 Characters Long")
.max(10, "Must be a 10 Characters Long"),
passwordClient: Yup.string()
.min(8, "Minimum 8 Characters")
.required("Required Field"),
});
class Signin extends Component {
constructor(props) {
super(props);
this.state = {
phone: "",
passwordClient: "",
clients: [],
};
}
handleSubmit = (values) => {
Services.createClient({
phone: this.state.phone,
passwordClient: this.state.passwordClient,
})
.then(console.log(this.state))
.catch(console.log(this.state));
};
handleChange = (event) => {
this.setState({ [event.target.name]: event.target.value });
};
render() {
let { phone, passwordClient } = this.state;
return (
<div className="wrapper justify-content-center">
<div className="form-wrapper">
<h1>
<b>
<i>Create an Account</i>
</b>
</h1>
<Formik
initialValues={{
phone,
passwordClient,
}}
validationSchema={validationSchema}
onSubmit={this.handleSubmit}
validate={this.validate}
enableReinitialize={true}
validateOnBlur={true}
validateOnChange={true}
>
{({ values, errors, touched, handleBlur, isValid, dirty }) => (
<form>
<div className="col-md-12 ">
<input
type="text"
placeholder="Enter Phone Number"
name="phone"
onChange={this.handleChange}
onBlur={handleBlur}
value={this.state.phone}
className={touched.phone && errors.phone ? "error" : null}
/>
<Errors touched={touched.phone} message={errors.phone} />
</div>
<div className="col-md-12 ">
<input
type="password"
placeholder="Enter password"
name="passwordClient"
onChange={this.handleChange}
onBlur={handleBlur}
value={this.state.passwordClient}
className={
touched.passwordClient && errors.passwordClient
? "error"
: null
}
/>
<Errors
touched={touched.passwordClient}
message={errors.passwordClient}
/>
</div>
<div className="createAccount">
<button
type="button"
onClick={this.handleSubmit}
disabled={!(isValid && dirty)}
>
Signin
</button>
<small>
Does not have an account ? <Link to="/signup">Sign up</Link>
</small>
</div>
</form>
)}
</Formik>
</div>
</div>
);
}
}
export default Signin;
вы знаете, как это решить?