我在我的应用程序上构建了一个登录系统,但发现调度功能的行为异常。
我在Redux,Redux-Thunk和Redux-Form上使用React。 在我的actions / index.js文件上,在发出axios请求后,当我使用.then()。catch()语法时,调度功能可以正常工作,但是当我更改为async / await语法时,第二个调度就无法工作不再工作了。我尝试在网上找到解释,但没有发现任何可以解决我问题的方法。有人知道为什么会这样吗?
完美运行的版本:
export const submitLoginForm = values => dispatch => {
axios.post(
'/auth/local/login',
qs.stringify({
email: values.email,
password: values.password
})
)
.then(res => {
dispatch({ type: FETCH_USER, payload: res.data });
})
.catch(err => {
dispatch(
stopSubmit('enterpriseLogin', {
_error: 'Error description...'
})
);
});
}
第二次派遣无效的版本:
export const submitLoginForm = values => async dispatch => {
try {
const res = await axios.post(
'/auth/local/login',
qs.stringify({
email: values.email,
password: values.password
})
);
dispatch({ type: FETCH_USER, payload: res.data });
} catch (err) {
//Doesnt Work !!
dispatch(
stopSubmit('enterpriseLogin', {
_error: 'Error description...'
})
);
}
}