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



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

  1. 用户输入用户名和密码并单击提交
  2. handle-submit fires操作方法,称为onAuth(authLogin(
  3. authLogin更新状态(如果成功与否(
  • 问题是状态正在更新为慢速并且state.error没有值这让我在用户没有输入有效用户名时将其重定向到某个地方,pass 如何等待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(;

}

  • 我的初始状态

    const initialState={token:null,错误:null,加载:false,};

  • 登录操作

    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,
    

    };};

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

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

这为我修复了

最新更新