【发布时间】:2021-10-27 11:07:00
【问题描述】:
我正在 React 电子商务项目中处理表单。
它的工作原理如下:当用户填写表单并单击提交按钮时,我想将表单数据发布到服务器并将用户重定向到确认/感谢页面。
不幸的是,当我填写表格并单击提交按钮时,以下代码以特定方式工作:
第一次点击 - 它发送数据但“setSubmitted(true)”不起作用所以我没有被重定向
第二次点击 - 再次发送数据,setSubmitted 工作,我被重定向
您能告诉我如何修复代码吗?
let history = useHistory();
const [submitted, setSubmitted] = useState(false);
const handleSubmit = (e) => {
e.preventDefault();
fetch('http://localhost:8000/orders', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ cart: 1 }), //dummy data
})
.then((response) => {
setSubmitted(true);
return response.json();
})
.then(() => {
if (submitted) {
return history.push('/thank-you-page');
}
});
};
return (
<form onSubmit={handleSubmit}> ... </form>
);
【问题讨论】:
标签: javascript reactjs forms react-router use-state