react 函数中的 setState 未在 promise 方法中更新
setState in react function not updating in promise method
我正在使用 reactjs 并且非常了解它,例如基础知识。但是,我一直在研究这种奇怪的行为,但一直未能找到罪魁祸首。也许你们中的一个反应精英有一个想法哈哈。所以我正在使用具有以下状态对象的有状态组件
this.state = {
buttonVisible: false,
};
因此,为了显示按钮并更改状态,我承诺这样做
handleSubmit = async (e) => {
const { status } = this.props;
e.preventDefault();
await verifyForm().then((data) => {
const submissionSuccess = status === 'SUCCESSFUL_SUBMISSION';
this.setState({
buttonVisible: submissionSuccess
});
actions.showNotification(data);
}).catch(err => actions.showNotification(err));
};
在渲染方法中:
这是具有应将 buttonVisible 状态设置为 true 的 onClick 处理程序的按钮。
<Button
fullWidth
onClick={this.handleSubmit}
type="submit"
variant="contained"
color="primary">Submit
</Button>
在我使用 onClick 处理程序单击按钮后,如果 this.state.buttonVisible 为真,它应该呈现以下按钮。
{ this.state.buttonVisible &&
<Button
onClick={this.handleShowModal}
variant="contained"
color="primary">
Proceed
</Button>
}
但它没有渲染按钮。所以我控制台记录了 this.state.buttonVisible 信息,它仍然是错误的。
我知道该方法没有返回任何错误,因为我可以看到表单在我这边已成功验证,而且,它不会进入 catch 块,而是进入 .then 块。
我认为这与 handleSubmit 处理程序有关。但不确定它是什么。任何帮助表示赞赏。谢谢!
await
returns 解析了 Promise 的值,而不是可以附加 then
的 Promise。您可以修改您的代码:
...
try{
const data = await verifyForm();
const submissionSuccess = status === 'SUCCESSFUL_SUBMISSION';
this.setState({
buttonVisible: submissionSuccess
});
actions.showNotification(data);
}catch(err){
actions.showNotification(err)
}
我正在使用 reactjs 并且非常了解它,例如基础知识。但是,我一直在研究这种奇怪的行为,但一直未能找到罪魁祸首。也许你们中的一个反应精英有一个想法哈哈。所以我正在使用具有以下状态对象的有状态组件
this.state = {
buttonVisible: false,
};
因此,为了显示按钮并更改状态,我承诺这样做
handleSubmit = async (e) => {
const { status } = this.props;
e.preventDefault();
await verifyForm().then((data) => {
const submissionSuccess = status === 'SUCCESSFUL_SUBMISSION';
this.setState({
buttonVisible: submissionSuccess
});
actions.showNotification(data);
}).catch(err => actions.showNotification(err));
};
在渲染方法中:
这是具有应将 buttonVisible 状态设置为 true 的 onClick 处理程序的按钮。
<Button
fullWidth
onClick={this.handleSubmit}
type="submit"
variant="contained"
color="primary">Submit
</Button>
在我使用 onClick 处理程序单击按钮后,如果 this.state.buttonVisible 为真,它应该呈现以下按钮。
{ this.state.buttonVisible &&
<Button
onClick={this.handleShowModal}
variant="contained"
color="primary">
Proceed
</Button>
}
但它没有渲染按钮。所以我控制台记录了 this.state.buttonVisible 信息,它仍然是错误的。
我知道该方法没有返回任何错误,因为我可以看到表单在我这边已成功验证,而且,它不会进入 catch 块,而是进入 .then 块。 我认为这与 handleSubmit 处理程序有关。但不确定它是什么。任何帮助表示赞赏。谢谢!
await
returns 解析了 Promise 的值,而不是可以附加 then
的 Promise。您可以修改您的代码:
...
try{
const data = await verifyForm();
const submissionSuccess = status === 'SUCCESSFUL_SUBMISSION';
this.setState({
buttonVisible: submissionSuccess
});
actions.showNotification(data);
}catch(err){
actions.showNotification(err)
}