javascript - 单页应用程序 : If I'm not posting form values to the server and I'm not using any HTML validation, 我可以停止使用 <form> 标签吗?

标签 javascript html reactjs forms react-hooks

这更多的是一个概念性问题。

TLDR:由于我没有通过 HTTP 将表单信息发布到服务器,也没有使用 HTML5 验证,因此在不使用 <form> 时我是否会丢失任何内容?和传统 HTML submit

<小时/>

我在项目中使用React已经有一段时间了。

这是一个单页应用,我的整个后端将基于Firebase Cloud Functions。

由于它是单页应用程序,因此不欢迎表单提交重定向和页面刷新。

我一直在想,到目前为止我构建的任何表单,如果没有 html <form> 我都可以做同样的事情。标签。

实际上,我所有的表单组件提交功能都有以下内容:

function onSubmit(event){
  event.preventDefault(); // BASICALLY DON'T SUBMIT ANYTHING AND LET MY CODE HANDLE THIS
  touchAllInputsValidateAndSubmit();
  return;
}

由于我没有向服务器发布任何内容(我将调用 Firebase 云函数)并且我不依赖 HTML5 验证,因此我真的需要使用 <form><input type="submit"/><button type="submit"/>

基本上,假设我的代码将处理验证(不使用 HTML5 验证),我希望在 React 中构建的任何表单组件,我可以这样做:

function SomeFormComponent() {
  const [formState,setFormState] = useState(); // STORE FORM INPUT VALUES IN STATE

  function handlePseudoSubmit() {
    callCloudFunction(formState);  // ON SUBMIT, PASS THE FORMSTATE TO A CLOUD FUNCTION
  }

  return(
    <React.Fragment>

      // Clickable divs for checkboxes
      // Regular inputs
      // Can use contenteditable divs
      // Whatever you can think of that could be part of a form

      <button onClick={handlePseudoSubmit}>
        Click to PseudoSubmit
      </button>

    </React.Fragment>
  );
}
<小时/>

问题

由于我没有通过 HTTP 将表单信息发布到服务器,也没有使用 HTML5 验证,因此在不使用 <form> 时我是否会丢失任何内容?和传统 HTML submit

最佳答案

我建议您不要使用 <form>元素。代码的首要任务之一是使其可读并表达意图。这是MDN introduction to the <form> element :

The HTML element represents a document section that contains interactive controls for submitting information to a web server.

由于您没有向服务器提交信息,因此使用 <form>元素可能会造成困惑。

关于javascript - 单页应用程序 : If I'm not posting form values to the server and I'm not using any HTML validation, 我可以停止使用 <form> 标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56278780/

相关文章:

选择之前会弹出 JavaScript 警报

javascript - 如何检测元素外部的点击?

javascript - transitionConfig 在 native react 中不起作用

javascript - rect.set 悬停区域不更新

html - 仅在 CSS 中运行同步动画

css - 有一个带有 google maps api map Canvas 和 div 背景 img 的 div,无法显示图像

javascript - 如何查找 HTML 页面中具有特定样式的特定类的重复次数

javascript - 在 React 中重新渲染 DOM

javascript - 为什么调用 react setState 方法不会立即改变状态?

javascript - jqm data-rel ="back"问题