axios.post 调用后 Redux 更新状态太慢

Posted

技术标签:

【中文标题】axios.post 调用后 Redux 更新状态太慢【英文标题】:Redux updating state too slow after axios.post call 【发布时间】:2021-09-16 09:28:22 【问题描述】:

所以我正在尝试使用 react、redux 应用一个简单的登录功能。 通过使用 axios post 请求发送到 django 服务器(用户名、密码) 但问题出在调用它的组件上。 例如组件 A。 所以场景是这样的:

    用户输入用户名和密码并点击提交 handle submit 触发调用 onAuth(authLogin) 的操作方法 authLogin 更新状态是否成功

问题是状态被更新为慢并且 state.error 没有价值 这让我在用户没有输入有效用户名时将用户重定向到某个地方,通过 如何等待 axios 调用完成并等待状态更新?

class A extends Component
  handleSubmit = (values) => 
      this.props.onAuth(values.username, values.password);
      if(!this.props.error)
         // redirecting somewherr
      else
         // giving error message
      
  

 render() 
  return
      <Form onSubmit=this.handleSubmit>
       <Input name="username"/>
      <Input name="password"/>
     </Form>
  


  const mapStateToProps = (state) => 
   return 
     error: state.error,
   ;
;

   const mapDispatchToProps = (dispatch) => 
    return 
           onAuth: (username, password) => 
  dispatch(actions.authLogin(username,password)),
    ;
;

导出默认连接(mapStateToProps, mapDispatchToProps)(LoginView);

我的初始状态

常量初始状态 = 令牌:空, 错误:空, 加载:假, ;

登录操作

  export const authLogin = (username, password) => 
    return (dispatch) => 
      dispatch(authStart());
    axios
    .post("http://127.0.0.1:8000/login/", 
      username: username,
      password: password,
    )
    .then((res) => 
      // some more code here
      dispatch(authSuccess(token));
    )
    .catch((err) => 
      dispatch(authFail(err));
    );
;

;

authFail 操作

export const authFail = (error) => 
 return 
   type: actionTypes.AUTH_FAIL,
   error: error,

; ;

【问题讨论】:

【参考方案1】:

认为解决这个问题的方法是使用重定向函数的 setTimeout 函数

setTimeout(() => 
    // redirecting function call
   , 3000);

这已经帮我解决了

【讨论】:

以上是关于axios.post 调用后 Redux 更新状态太慢的主要内容,如果未能解决你的问题,请参考以下文章

Redux状态更新后没有调用ComponentDidMount?

为啥 axios post 方法在连续 6 次 post 调用后停止工作?

调度操作后 Redux 状态未更新

如何在 Redux 中更新状态后触发回调?

从 redux 更改状态后如何以及何时调用反应组件方法

Redux 存储在调度后不更新(异步数据加载)