У меня есть RegistrationForm компонент. Это функциональный компонент. Но мне нужно переделать этот компонент в компонент класса.
Я знаю, что компонент класса должен иметь:
- строка как эта:
class SignupForm extends React.Component
- метод
render()
- в моем случае
state
вместо useState
- в моем случае метод
setState
вместо setErrorMessage(res[0].message);
Но у меня все еще есть:
const history = useHistory();
history.push("/home");
в методе onSubmit const {handleSubmit, values, handleChange, errors, handleBlur, isSubmitting, setSubmitting} = useFormik({ /.. });
И я не знаю, как преобразовать функциональный компонент в компонент класса через эти три строки. Как это сделать?
Небольшая часть RegistrationForm. js:
const SignupForm = () => {
const history = useHistory();
const [errorMessage, setErrorMessage] = React.useState(null);
const {handleSubmit, values, handleChange, errors, handleBlur, isSubmitting, setSubmitting} = useFormik({
initialValues: {
/........
},
validateOnBlur: false,
/........
validationSchema: yup.object().shape({
username: yup.string()
.required('This field is required'),
/........
}),
onSubmit: async (formValues) => {
try {
const res = await apiFunction('api/auth/register', {
/........
});
if(Array.isArray(res)){
setErrorMessage(res[0].message);
} else {
const token = res.token.token;
localStorage.setItem('myToken', token);
history.push("/home");
}
} catch(e) {
/........
}
},
});
return (
<form onSubmit={handleSubmit}>
<SignupInput
/.......
inputProps={{
name:'username',
value: values.username,
onBlur: handleBlur,
/.......
}} error={errors.username} />
<button type="submit" disabled={isSubmitting}>Submit Form</button>
</form>
);
};