reactjs - React 中使用 `useState` 来管理表单是否已提交是否正常?
问题描述
一个基本的在线 React 教程演示了如何创建一个包含 3 个字段(名字、姓氏和电子邮件)的基于 React 的表单。令我惊讶的是,它必须useState
管理是否已提交表单,并使用该表单来决定是否显示成功消息。
请注意,它不会进行实际的表单提交(即没有 API 调用),所以我想知道它是否在这里仅将状态用于模拟目的。
这是一个片段:
const [submitted, setSubmitted] = useState(false);
...
{submitted && !values.lastName && <span id='last-name-error'>Please enter a last name</span>}
...
{showSuccess && <div class='success-message'>Success! Thank you for registering</div>}
...
现实世界的 React 应用程序useState
管理是否已提交简单的表单(例如“联系我们”或“反馈”等)是否正常?我的猜测是通常没有必要这样做。
作为生成的 API 调用,“成功”或“失败”都可以简单地用于显示错误消息的状态。此后,理想情况下,表单应自行重置以允许再次提交。因此,无需存储提交表单的状态。我的理解正确吗?
解决方案
你的问题有点令人困惑。基本上,如果您想在 React 中存储数据并且该数据对您的应用程序有直接影响,您通常应该将其保存在 state 中。当您提交表单时,表单onSubmit
事件处理程序将被调用,您可以在该事件处理程序中执行所有操作。很明显,教程中的提交状态是一个标志来模拟获取过程。通常,当您要处理提交表单和获取 API 时,您应该在状态中存储 2 个项目:
错误和加载
您应该使用 loading 标志在获取 API 期间显示加载指示器,并使用 error 检查是否存在任何错误存储并显示它。如果 API 成功获取,您可以将用户重定向到另一个页面,显示通知或更改您所在状态的某些数据。由你决定。但请确保submitted
您的教程中的状态只是一个示例和模拟。但它在现实世界中有实际用途!希望能帮助到你!
这是一个示例:我想通过获取 api 添加用户,如果 api 获取成功,我想将其添加到列表中:
推荐阅读
- java - 如何使用 Java 中的 stream() 根据索引(位置)过滤列表中的元素?
- android - 当 Room 数据库发生变化时,LiveData 会更新我的 observable
- windows - 使用 Apache24 在 Windows 上配置 phpmyadmin
- c# - dd/MM/yyyy 格式在 ASP.NET Core 中不起作用
- c# - 在服务器端使会话 cookie 无效
- join - 如何将单元格数据包含到文本字符串中?
- python - 在 scipy 中重现 sox 频谱图
- laravel - 控制器中更新和编辑的区别 - laravel
- r - 查找具有相同元素的行(不关心顺序)
- algorithm - 解决“玩具匹配难题”的最佳算法是什么?