javascript - 反应表单提交问题
问题描述
我有一个包含表单的模式。每当我通过它提交数据并控制台记录它时,它都不会第一次工作。我第二次通过它提交数据,上一个条目的控制台日志。谁能确定我是否可能遗漏任何东西?
const handleSubmit = (event) => {
event.preventDefault();
setOpen(false);
setSubmission({
ref: event.target[0].value,
brand: event.target[1].value,
iname: event.target[2].value,
gtin: event.target[3].value,
qty: 0,
});
console.log(submission);
};
解决方案
嗯,这就是钩子的工作方式,到你的时候console.log(submission)
,状态还没有改变。
这是因为当您调用 setSubmission() 时,它会让 react 知道您想要更新状态并将其放入队列中。
如果要捕获状态变化,请使用useEffect()
钩子
useEffect(() => {
console.log(submission); // this hook captures the state change and this will have the correct value
}, [submission]); // think of this as a dependency variable that `useEffect` will listen for changes.
推荐阅读
- c# - 从 mongo 数据库中映射不同的案例
- apache-flink - Flink 中如何管理数据源连接池
- sharepoint - 选择后删除 SharePoint 中的选项。(条件公式)
- angular - firestore firebase storage 以较低的分辨率检索图像
- nfc - 如何正确使用 ISO 15693 命令“获取多块保护状态”?(使用 MSP430 编程)
- docker - 为什么 docker 在挂载 NFS 卷时无法 CHMOD?
- visual-studio - 有没有办法在 Visual Studio 2019 中创建快捷方式来自动选择整个函数?
- php - 如何使用 Codeigniter 从 2 个不同的表中选择数据?
- typescript - 打字稿是否可以从当前类中推断出类型?
- nuget - 使用面向多个框架的 NuGet 打包工具