【发布时间】:2021-04-16 11:07:29
【问题描述】:
const [buttonDisabled, setButtonDisabled] = useState(false);
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
setButtonDisabled(true);
const response = await fetch(
"http://localhost:5000/....",
{
method: "POST",
body: JSON.stringify(state),
},
);
setButtonDisabled(false);
const responseJson = await response.text();
};
// Button
<button disabled={buttonDisabled} type="submit">Submit form</button>
我希望按钮在获取过程中被禁用(有一个指示器),但它不起作用。我究竟做错了什么?这也是处理禁用按钮的适当方法吗?或者有没有更好的方法。
【问题讨论】:
-
我看不出你的代码有什么问题,是的,这就是我要遵循的逻辑来实现你正在寻找的东西。如果提取发生得非常快,您可能看不到禁用状态 - 如果它需要几分之一秒,那么您将无法看到它。如果您想仔细检查您的逻辑是否有效,请在代码中添加一些 console.log:在
setButtonDisabled(true);=>console.log('Disabling button')之后 - 在setButtonDisabled(false);=>console.log('Enabling back the button')之后,您可以在实际按钮之前放置另一个 @ 987654326@ -
非常感谢!!这个
{console.log(buttonDisabled)}特别是一个很棒的提示,我还不知道,但肯定会在未来使用!!
标签: javascript reactjs typescript forms form-submit