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

React函数组件表单未正确设置state状态变量问题求助

问题原因

你在handleChange中更新表单状态时没有保留原有状态的属性,每次更新都会用仅包含当前输入字段的新对象替换整个formData,导致除了最后一次输入的字段外,其余字段全部丢失,所以提交时打印serviceName会返回undefined。同时你在handleChange中调用的event.preventDefault()是多余的,输入框的change事件不需要阻止默认行为。

修复代码

仅需要修改handleChange方法即可:

const handleChange = (event) => {
    // 传入函数更新状态,先展开原有所有状态属性,再覆盖当前修改的字段
    setFormData(prevFormData => ({
        ...prevFormData,
        [event.target.name]: event.target.value
    }))
};

可选优化

你在axios请求中使用模板字符串包裹属性是多余操作,可直接引用原值:

const res = await axios.post("/outage-new", {
    user_id: formData.userReport,
    service_type: formData.serviceType,
    service_name: formData.serviceName,
    outage_street: formData.serviceStreet,
    outage_city: formData.serviceCity,
    outage_state: formData.serviceState,
    outage_description: formData.serviceDescription,
})

内容的提问来源于stack exchange,提问作者Shafi Kamal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:03