react js 处理表单( form )的2个例子

起因, 目的:

表单其实,有点复杂,因为涉及事件,event.

不熟悉的代码,还是尽量手写,不然的话,AI 生成的东西,自己看不懂。

例1 普通, 直接的方法

一个输入框,一个处理函数。

js 复制代码
import { useState } from "react";

// 使用 form, 表单
function App() {
  const [username, setUsername] = useState("friend!");
  const [password, setPassword] = useState("123!");

  function handleUsernameChange(event) {
  
    // 理解 event.target.value
    // target 是 input 标签,
    // value  是用户输入的值
    // 同理,还可以打印出其他属性,
    // 如 event.target.name, event.target.type 等
    console.log("Username changed: ", event.target.value);
    // console.log("event.target.name: ", event.target.name);
    // console.log("event.target.type: ", event.target.type);
  }

  function handlePasswordChange(event) {
    console.log("Password changed: ", event.target.value);
  }

  return (
    <form>
      <input type="text" name="username" placeholder="Your name" onChange={handleUsernameChange} />
      <input type="password" name="password" placeholder="Password" onChange={handlePasswordChange} />
    </form>
  );
}

export default App;

onChange 这个函数确实很有用,用户调试代码很不错。

例2 用一个函数来处理表单
python 复制代码
import { useState } from "react";

// 使用 form, 表单
function App() {
  
  // 用一个 state 来处理整个表单。
  const [formData, setFormData] = useState({username: "", password: ""});

  console.log("formData changed: ", formData);

  function handleChange(event) {
    setFormData(prevFormData => {

      return {
        ...prevFormData,  // 复制 prevFormData 对象

        // 这里如果不加 [] 会报错。
        // [event.target.name] 表示动态计算出这个字段的名字, 作为对象的 key
        [event.target.name]: event.target.value  // 更新对应字段
      }

    })
  }

  // 如果要使用 一个函数来处理表单,每个字段都加上 name 属性
  return (
    <form>
      <input type="text" name="username" placeholder="Your name" onChange={handleChange} />
      <input type="password" name="password" placeholder="Password" onChange={handleChange} />
    </form>
  );
}

export default App;

结论 + todo

走过路过,支持一下啊。

相关推荐
ai超级个体14 小时前
别再吹牛了,100% Vibe Coding 存在无法自洽的逻辑漏洞!
前端·ai·ai编程·vibe coding
Mike_jia14 小时前
🎓 OpenMAIC 终极指南:清华开源的多智能体 AI 互动课堂平台
前端
踩着两条虫14 小时前
告别低代码“黑盒”!VTJ.PRO 2.0:用AI与自由重塑Vue3开发
前端·低代码·ai编程
OpenTiny社区14 小时前
WebAgent :基于 MCP 协议打造的智能应用“超级路由器”
前端·agent·mcp
吴声子夜歌15 小时前
TypeScript——模块解析
javascript·ubuntu·typescript
dweizhao15 小时前
别再用 Figma 画线框图了,Google 这款免费工具直接出 UI 稿
前端
han_15 小时前
JavaScript设计模式(五):装饰者模式实现与应用
前端·javascript·设计模式
ProgramHelpOa15 小时前
Amazon SDE Intern OA 2026 最新复盘|70分钟两题 Medium-Hard
java·前端·javascript
smchaopiao16 小时前
如何用CSS和JS搞定全屏图片展示
前端·javascript·css
酉鬼女又兒16 小时前
零基础快速入门前端CSS Transform 与动画核心知识点及蓝桥杯 Web 应用开发考点解析(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·css·职场和发展·蓝桥杯·html