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

React中如何将API获取的值传入handleSubmit并合并到inputs

解决方法

核心思路

无需通过handleChange收集API获取的user.id,直接在提交阶段将其合并到inputs对象,或是在获取到用户数据后初始化到inputs状态中即可。


方案1:提交时合并数据(推荐)

修改handleSubmit函数,把API返回的用户ID与现有inputs合并后再发起请求:

const handleSubmit = (event) => {       
    event.preventDefault();     
    // 合并用户ID到提交数据
    const submitData = {
        ...inputs,
        id: user.id // user为API获取的单个用户对象
    };
    axios.post(`https://xxxxxxxx/api_xxxxxxx/user/save`, submitData).then(function(response){
        console.log(response.data);
    });          
}

同时修正状态定义(API返回单个用户而非数组):

// 将初始状态从数组改为对象
const [user, setUser] = useState({});

// 修改getUser函数,直接存储单个用户对象
function getUser() {
    axios.get(`https://xxxxxxx/api_xxxx/users/${id}`).then(function(response) {
        console.log(response.data);
        setUser(response.data);
    });
}

// 渲染部分无需map,直接使用user.id
return (
    <form onSubmit={handleSubmit}>
        <textarea type="text" name="comment" onChange={handleChange} />
        {/* 可选:显示用户ID用于确认 */}
        <div>当前用户ID:{user.id}</div>
        <button type="submit">Register</button>
    </form>
)

方案2:初始化时将ID存入inputs

在获取用户数据成功后,直接把user.id写入inputs状态,提交时直接传inputs即可:

function getUser() {
    axios.get(`https://xxxxxxx/api_xxxx/users/${id}`).then(function(response) {
        console.log(response.data);
        setUser(response.data);
        // 将用户ID初始化到inputs中
        setInputs(prev => ({...prev, id: response.data.id}));
    });
}

// 提交函数无需修改,直接使用inputs
const handleSubmit = (event) => {       
    event.preventDefault();     
    axios.post(`https://xxxxxxxx/api_xxxxxxx/user/save`, inputs).then(function(response){
        console.log(response.data);
    });          
}

你之前尝试无效的原因

  • onSubmit是<form>标签的专属事件,<input>标签不会触发该事件,因此你的handleChange不会被调用
  • 即便给隐藏输入框添加onChange,由于其值是固定的,不会触发变化事件,也无法被handleChange收集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:47:54