【发布时间】:2017-10-11 18:13:48
【问题描述】:
我有一个正在运行的应用程序,只是在我的应用程序发出提交调用时尝试将状态设置为loading: true,以便我可以显示加载屏幕。因为我想确保在进行加载调用之前设置状态,所以我使用回调。但是,我没有看到以下代码的加载更新:
submitSecurityAnswer = () => {
const { submit, handleError, navigate } = this.props;
const { answer } = this.state;
this.setState({ loading: true }, () => {
console.log('setState', this.state)
try {
submit({ answer, ...this.props }).then(({ errors, status }) => {
this.setState({ answer: '' });
if (status && status === 200) {
navigate();
} else if (status === 401) {
this.setState({ showError: true });
} else {
handleError(errors[0]);
}
});
} catch (err) {
console.log(err);
}
});
this.setState({ loading: false });
};
当我检查我的控制台日志时,我发现状态没有更新并且加载仍然是错误的。
我在这里错过了什么?
【问题讨论】:
-
如果我理解您正在尝试正确执行的操作,您的
this.setState({loading:false})应该在navigate();之前或之后 -
实际上,如果您将
this.setState({ answer: '' });更改为this.setState({ answer: '', loading:false });,它也应该可以工作 -
是的,我正在尝试
this.setState({loading:false})在submit()之前 -
然后放在submit()函数之前
-
您同时拨打
this.setState({ loading: true })和this.setState({ loading: false })。后一种调用会覆盖第一种。
标签: javascript reactjs setstate