实现一个简单的表单 (Form) 组件,支持校验和提交

推荐答案

-- -------------------- ---- -------
------ ------ - -------- - ---- --------

----- ---------- - -- -- -
  ----- ---------- ------------ - ----------
    --------- ---
    --------- ---
  ---
  ----- -------- ---------- - -------------

  ----- -------- - -- -- -
    ----- --------- - ---
    -- -------------------- -
      ------------------ - --------- -- ----------
    -
    -- -------------------- -
      ------------------ - --------- -- ----------
    - ---- -- ------------------------- - -- -
      ------------------ - --------- ---- -- -- ----- - ------------
    -
    ---------------------
    ------ ----------------------------- --- --
  --

  ----- ------------ - --- -- -
    -------------------
    -- ------------ -
      ----------------- ------------ ----------
      -- -------------
    -
  --

  ----- ------------ - --- -- -
    ----- - ----- ----- - - ---------
    -------------
      ------------
      ------- ------
    ---
  --

  ------ -
    ----- ------------------------
      -----
        ------------------------
        ------
          -----------
          ---------------
          -------------------------
          -----------------------
        --
        ---------------- -- -------------------------------
      ------
      -----
        ------------------------
        ------
          ---------------
          ---------------
          -------------------------
          -----------------------
        --
        ---------------- -- -------------------------------
      ------
      ------- -----------------------------
    -------
  --
--

------ ------- -----------

本题详细解读

1. 组件结构

  • SimpleForm 组件:这是一个简单的表单组件,包含两个输入字段:usernamepassword
  • formData 状态:使用 useState 来管理表单数据,formData 是一个对象,包含 usernamepassword 两个字段。
  • errors 状态:用于存储表单校验的错误信息,errors 是一个对象,键为字段名,值为错误信息。

2. 表单校验

  • validate 函数:用于校验表单数据。如果 usernamepassword 为空,或者 password 长度小于 6,则设置相应的错误信息。如果校验通过,返回 true,否则返回 false
  • setErrors:用于更新 errors 状态,显示校验错误信息。

3. 表单提交

  • handleSubmit 函数:在表单提交时调用,首先阻止默认提交行为,然后调用 validate 函数进行校验。如果校验通过,则打印表单数据并执行提交逻辑。
  • handleChange 函数:在输入框内容变化时调用,更新 formData 状态。

4. 表单渲染

  • form 标签:包含两个输入框和一个提交按钮。
  • input 标签:分别对应 usernamepassword 字段,value 绑定到 formData 中的相应字段,onChange 事件绑定到 handleChange 函数。
  • errors 显示:如果 errors 中有错误信息,则在输入框下方显示相应的错误提示。

5. 扩展性

  • 该组件可以轻松扩展以支持更多的输入字段和更复杂的校验规则。
  • 可以通过添加更多的 input 元素和相应的校验逻辑来实现更复杂的表单功能。
纠错
反馈