我需要在异步调用期间禁用和重新启用按钮。我只能禁用它。如果我添加代码以重新启用它会被忽略。我承认我可能没有问正确的问题。
我有一个带有“操作”按钮的功能:
<button className={`doFoo${buttonClasses[type]} ${type}`} onClick={onClick} disabled={isButtonDisabled}>
这由 React 类“Actions”调用:
<Action type="like" onClick={onLike} isButtonDisabled={isButtonDisabled} />
这由另一个 React 类“List”调用:
<Actions onLike={this.handleLike} onDislike={this.handleDislike} isButtonDisabled={isButtonDisabled}/>
该类中还有以下功能:
...
thumbsUp() {
const {
...
} = this.props;
const {
...
} = this.state;
this.setState({ wasLiked: true, viewProfile: false }, () => {
setTimeout(doThumbsUp, ACTION_CONFIRMATION_ANIMATION_TIMEOUT);
});
function doThumbsUp() {
thumbsUp({
index: activeIndex,
id: profiles[activeIndex].id
});
}
},
handleLike() {
const { showThumbsUpConfirmation } = this.props;
if (showThumbsUpConfirmation) {
this.showThumbsUpConfirmationModal();
} else {
this.thumbsUp();
}
},
...
源代码如下所示:
export function thumbsUp({ id, ... }) {
return api.post(`${API.ENDPOINTS.FOO}/${id}/thumbs_up`, {
...
});
}
我可以将其放置this.setState(isButtonDisabled: true)
在此代码中的各个位置,并且该值使其显示在视图中并禁用该按钮。但是,我无法弄清楚如何在工作完成后重新启用该按钮。