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

React.js多输入表单处理:提交时仅能获取单个输入值该如何解决?

问题解决方法

核心问题原因

你在handleInputs中更新formData状态时直接覆盖了整个对象,没有保留原有字段,导致每次输入后仅保留最后修改的单个字段值。

修复步骤

1. 修正输入监听函数

更新state时使用扩展运算符保留formData原有字段,推荐使用函数式更新避免异步更新导致的旧值问题:

handleInputs = (e) => {
  // 函数式更新拿到最新的state
  this.setState(prevState => ({
    formData: {
      ...prevState.formData, // 展开原有所有字段
      [e.target.name]: e.target.value // 覆盖当前修改的字段
    }
  }));
}

2. 检查表单输入项配置

确保所有6个输入框的name属性和formData中定义的key完全一致,示例:

<input name="org_name" value={this.state.formData.org_name} onChange={this.handleInputs} />
<input name="org_code" value={this.state.formData.org_code} onChange={this.handleInputs} />
<!-- 其余4个字段同理,name要和org_type、org_category等完全匹配 -->

3. 修复提交函数的语法问题

你当前的updateOrganization函数中const org_id=定义后没有赋值,更新接口通常需要传递待更新的机构ID,可根据实际需求补充:

updateOrganization = async(e) => {
  e.preventDefault();
  // 补充org_id赋值,比如从路由参数、state.organization中取值
  const org_id = this.state.organization.id; 
  // 提交时把org_id也带入请求参数中
  const res = await axios.put('http://localhost:8000/api/update_organization', {
    ...this.state.formData,
    org_id
  });
}

完成以上修改后即可正常提交所有6个字段的表单值。

内容的提问来源于stack exchange,提问作者Shanu k k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:04