You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS输入框无法输入文本问题排查求助

问题解决:React注册组件输入框无法输入文本

核心问题

你的输入框缺少name属性,handleChange函数依赖e.target.name来匹配state中的字段,导致无法更新state,输入框内容因此无法变化。另外,表单提交时会触发默认页面刷新,也需要处理。

修复后的完整代码

import React, { useState } from "react";
import axios from "axios";

const SignUp = () => {
  const [user, setUser] = useState({
    name: "",
    email: "",
    password: ""
  });

  const handleChange = (e) => {
    const { name, value } = e.target;
    setUser({
      ...user,
      [name]: value
    });
  };

  const register = (e) => {
    e.preventDefault();
    const { name, email, password } = user;
    if (name && email && password) {
      axios
        .post("http://localhost:8800/api/auth/signup", user)
        .then((res) => console.log(res))
        .catch((error) => console.log(error));
    } else {
      alert("Invalid input");
    }
  };

  return (
    <form onSubmit={register}>
      <h1>Sign up</h1>
      <br />

      <span className="input"></span>
      <input
        type="text"
        className="name"
        name="name"
        value={user.name}
        onChange={handleChange}
        placeholder="Full name"
        required
      />
      <span className="input"></span>
      <input
        type="email"
        className="email"
        name="email"
        placeholder="Email address"
        required
        value={user.email}
        onChange={handleChange}
      />
      <span id="passwordMeter"></span>
      <input
        type="password"
        className="password"
        name="password"
        placeholder="Password"
        value={user.password}
        onChange={handleChange}
      />

      <button type="submit">
        <span>Sign up</span>
      </button>
    </form>
  );
};

export default SignUp;

关键修复点

  • 添加name属性:给每个输入框设置name,值与state中的name、email、password一一对应,确保handleChange能正确更新对应字段的state值。
  • 阻止默认提交行为:在register函数中调用e.preventDefault(),避免提交后页面刷新丢失输入内容。
  • 绑定表单onSubmit事件:将提交逻辑绑定到表单的onSubmit事件上,而非按钮的onClick,符合React表单的标准处理方式。

修改完成后,输入框可正常输入内容,提交时能正确将用户信息发送到后端接口,最终存入MongoDB。

内容的提问来源于stack exchange,提问作者Max Hao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:33:16