【发布时间】:2016-05-20 20:15:55
【问题描述】:
在我的 React 组件中,我有一个按钮,用于在单击时通过 AJAX 发送一些数据。我只需要第一次发生,即在第一次使用后禁用按钮。
我是如何尝试这样做的:
var UploadArea = React.createClass({
getInitialState() {
return {
showUploadButton: true
};
},
disableUploadButton(callback) {
this.setState({ showUploadButton: false }, callback);
},
// This was simpler before I started trying everything I could think of
onClickUploadFile() {
if (!this.state.showUploadButton) {
return;
}
this.disableUploadButton(function() {
$.ajax({
[...]
});
});
},
render() {
var uploadButton;
if (this.state.showUploadButton) {
uploadButton = (
<button onClick={this.onClickUploadFile}>Send</button>
);
}
return (
<div>
{uploadButton}
</div>
);
}
});
我认为发生的情况是状态变量 showUploadButton 没有立即更新,React 文档说这是意料之中的。
我怎样才能强制按钮在被点击的那一刻被禁用或完全消失?
【问题讨论】:
-
您是否注意到问题或只是想知道?你能双份提交吗?
-
Formik库默认处理这个问题,在Formik官网搜索issubmitting
-
请查看@cquezel 的答案以获得更简洁的方法。使用 ref 禁用表单控件(显示在接受的答案中)是一件老事,可能与 ReactJs 的初始版本有关。
标签: javascript reactjs