Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 访问Formik';s设置有效的值_Reactjs_Formik - Fatal编程技术网

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;
 }