所以我尝试使用react、redux应用一个简单的登录功能。通过使用axios post请求发送到django服务器(用户名、密码(但问题出在调用它的组件上。例如组件A。所以场景是这样的:
- 用户输入用户名和密码并单击提交
- handle-submit fires操作方法,称为onAuth(authLogin(
- 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);
这为我修复了