Reactjs 访问Formik';s设置有效的值
我有一个Reactjs 访问Formik';s设置有效的值,reactjs,formik,Reactjs,Formik,我有一个Formik表单,需要响应错误useContext。我不知道如何访问表单之外的Formik道具。我会把代码贴在这里,如果有任何建议,我将不胜感激 const authContext = useContext(AuthContext); const { login, error, isAuth } = authContext; useEffect( () => { if (isAuth) { props.history.push(&q
Formik
表单,需要响应错误useContext
。我不知道如何访问表单
之外的Formik
道具。我会把代码贴在这里,如果有任何建议,我将不胜感激
const authContext = useContext(AuthContext);
const { login, error, isAuth } = authContext;
useEffect(
() => {
if (isAuth) {
props.history.push("/");
}
if (error) {
// access Formik's setValues
}
},
// eslint-disable-next-line
[isAuth, error, props.history]
);
<Formik
initialValues={{
username: "",
email: "",
password: "",
password2: "",
}}
validationSchema={Yup.object({
email: Yup.string()
.email("Invalid email address.")
.required("An email is required."),
password: Yup.string().required("A password is required."),
})}
onSubmit={(submissionData, { setSubmitting }) => {
setSubmitting(true);
login(submissionData);
setSubmitting(false);
}}
>
{(props) => (
<Form>
<MyInput
label="Email: "
name="email"
type="email"
placeholder="Enter your email address"
/>
<MyInput
label="Password: "
name="password"
type="password"
placeholder="Enter your password"
/>
<button type="submit" className="btn">
{props.isSubmitting ? (
<ClipLoader size={16} color={"color"} />
) : (
"Submit"
)}
</button>
</Form>
)}
</Formik>
const authContext=useContext(authContext);
const{login,error,isAuth}=authContext;
使用效果(
() => {
if(isAuth){
props.history.push(“/”);
}
如果(错误){
//访问Formik的设置值
}
},
//eslint禁用下一行
[isAuth,错误,道具,历史]
);
{
设置提交(真);
登录(提交数据);
设置提交(假);
}}
>
{(道具)=>(
{props.isSubmitting(
) : (
“提交”
)}
)}
提前谢谢。您可以使用
useFormik
钩子访问setValues
你可以查一下
例如:-
import React from 'react';
import { useFormik } from 'formik';
export default function App() {
const formik = useFormik({
initialValues: {
firstName: '',
lastName: '',
email: '',
},
onSubmit: values => {
alert(JSON.stringify(values, null, 2));
},
});
React.useEffect(() => {
console.log(formik.setValues);
}, []);
return null;
}