【发布时间】:2018-09-13 00:03:42
【问题描述】:
假设我有一个登录功能
login = () => {
let url = baseURL + '/user/login?_format=json';
let data = {
"name": this.state.email,
"pass": this.state.password
};
return axios({
url,
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
withCredentials: true,
credentials: 'same-origin'
})
.then(function(result) {
console.log('result:', result);
this.setState({csrfToken: result.data.csrf_token});
this.setState({logoutToken: result.data.logout_token});
return result;
})
.catch(error => console.log('error:', error));
};
然后我想在 React 中调用 onSubmit 函数,如下所示。如果函数因任何原因返回错误。在这种情况下如何防止下一个函数 api.login() 运行?
{api => (
<Form
onSubmit={async e => {
e.preventDefault();
await this.login();
api.login()
}}
>
<input/>
</Form>
在这种情况下,try/catch 有意义吗?我已经尝试了几个选项,包括内联 try catch,只要来自this.login(); 的承诺返回结果或错误,无论发生什么,该函数都会运行。
【问题讨论】:
标签: reactjs promise async-await try-catch