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
Javascript 如何取消所有订阅和异步任务?_Javascript_Reactjs_Axios_Formik - Fatal编程技术网

Javascript 如何取消所有订阅和异步任务?

Javascript 如何取消所有订阅和异步任务?,javascript,reactjs,axios,formik,Javascript,Reactjs,Axios,Formik,在登录页面上输入creds后,我会被引导到预期页面,但控制台中会显示此错误。如果我理解正确的话,它是由Formik和组件未卸载引起的?我搜索过有类似错误的用户,但我似乎可以找到一个修复我的错误的方法 import React,{useState,useffect}来自“React”; 从'formik'导入{Form,Field,withFormik}; 从“Axios”导入Axios; 从“是”以是的形式导入*; 导入“/signin.scss”; 常量符号=({错误、接触、值、状态})=

在登录页面上输入creds后,我会被引导到预期页面,但控制台中会显示此错误。如果我理解正确的话,它是由Formik和组件未卸载引起的?我搜索过有类似错误的用户,但我似乎可以找到一个修复我的错误的方法

import React,{useState,useffect}来自“React”;
从'formik'导入{Form,Field,withFormik};
从“Axios”导入Axios;
从“是”以是的形式导入*;
导入“/signin.scss”;
常量符号=({错误、接触、值、状态})=>{
const[user,setUser]=useState([]);
//console.log(用户);
useffect(()=>{
如果(状态){
setUser([…用户,状态]);
}
},[用户,状态];
返回(
登录
用户名/电子邮件:
{toucted.username&&errors.username&{errors.username}

}
密码: {toucted.password&&errors.password&&{errors.password}

}
登录 {user.map(用户=>(

{users.FirstName}您已成功登录

))} ); }; 常量FormikSignIn=带formik({ mapPropsToValues({username,password}){ 返回{ 用户名:用户名| |“”, 密码:密码| |“” }; }, validationSchema:Yup.object().shape({ 用户名:Yup.string().required('username is required'), 密码:Yup.string() .required('需要密码') .min(8,“密码太短-至少应为8个字符”。) .matches(/[a-zA-Z]/,“密码只能包含拉丁字母”。) }), handleSubmit(值,{props,setStatus}){ console.log('表单提交',值); 轴心柱https://bw-how-to.herokuapp.com/login,价值观) 。然后(res=>{ //控制台日志(res); 如果(资源状态===200){ props.history.push(`/homepage`); 设置状态(恢复数据); } //resetForm(); }) .catch(err=>console.error('error',err.response)); } })(签名);
导出默认FormikSignIn我假设您正在使用React路由器?我认为您可以通过翻转
setStatus
props.history.push
来解决您的问题。发生的情况是,您正在导航到一个新页面,然后尝试设置状态。如果您先设置状态,然后导航,则应该解决该错误消息

handleSubmit(values, { props, setStatus }) {
    console.log('Form submited', values);
    Axios.post('https://bw-how-to.herokuapp.com/login', values)
      .then(res => {
        // console.log(res);
        if (res.status === 200) {
          setStatus(res.data);
          props.history.push(`/homepage`);
        }

        // resetForm();
      })
      .catch(err => console.error('Error', err.response));

在这种情况下,可能可以完全忽略
setStatus
,因为组件无论如何都要卸载?是的,我正在使用React路由器,翻转setStatus和props.history.push并尝试登录。没有错误!非常感谢。我会记住,状态需要先设定。事实上。基于这个问题,我不确定
setStatus
是否是从父母那里传入的一个道具,其中可能包含它(例如:set jwt/user等)。因此,为什么我建议切换它们而不是忽略它们。