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

React问题:设置state后输入框无法编辑如何解决?

React输入框无法编辑问题修复

你的代码里有两个关键错误导致输入框无法编辑:

  1. 输入框未设置name属性
    你的handleChange函数依赖event.target.name来确定要更新状态中的哪个字段,但两个输入框都没加name属性,状态无法正确对应更新。

  2. JSX属性绑定写法错误
    你给value、onChange、onClick加了双引号包裹花括号(比如value="{teacherLoginData.email}"),这会把这些值当成字符串处理,而不是绑定对应的状态或函数,导致输入框和状态完全脱节。

修正后的完整代码

import { useState } from 'react';

const LoginForm = () => {
    const [teacherLoginData, setTeacherLoginData] = useState({
        email: '',
        password: '',
    });

    const handleChange = (event) => {
        setTeacherLoginData({
            ...teacherLoginData,
            [event.target.name]: event.target.value
        });
    };

    const submitForm = () => {
        console.log(teacherLoginData);
    };

    return (
        <div>
            <input 
                value={teacherLoginData.email} 
                onChange={handleChange} 
                type="text" 
                name="email" 
                className="form-control" 
            />
            <input 
                value={teacherLoginData.password} 
                onChange={handleChange} 
                type="password" 
                name="password" 
                className="form-control" 
            />
            <button onClick={submitForm} className="btn btn-primary">Login</button>
        </div>
    );
};

export default LoginForm;

关键修改说明

  • 给两个输入框分别添加name="email"和name="password",让handleChange能正确识别要更新的状态字段。
  • 去掉value、onChange、onClick属性外层的双引号,直接用{}绑定对应的状态和函数,确保输入框值和状态实时联动。

内容的提问来源于stack exchange,提问作者Destiny Franks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:45:20