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

如何获取POST请求发送对象的ID并保存至PointID数组?

解决方法:获取后端返回的ID并更新到state的PointID数组里

我来帮你搞定这个问题~ 核心思路就是在后端返回数据后,从响应里取出分配的ID,然后通过setState把它加到你的PointID数组里。这里还要注意setState的异步特性,用函数式更新会更安全,避免因为异步导致的state不一致问题。

修改后的代码如下:

state = { elements: [], PointID: [] }

appendElement = (Name, Description, X, Y) => { 
  // 用函数式更新elements,确保基于最新的state添加元素
  this.setState(prevState => ({
    elements: [...prevState.elements, { Name, Description, X, Y }]
  }))

  const newItem = { 
    "Name": Name, 
    "Y": Y, 
    "X": X, 
    "RouteId": 1, 
    "Description": Description 
  }

  fetch("http://dearjean.ddns.net:44301/api/Points3", { 
    method: "post", 
    headers: { "Content-Type": "application/json" }, 
    body: JSON.stringify(newItem) 
  })
  .then(res => {
    // 先检查请求是否成功
    if (!res.ok) {
      throw new Error('请求失败,请检查后端服务');
    }
    return res.json();
  })
  .then(res => { 
    console.log('后端返回的数据:', res);
    // 从返回的res中取出ID,这里假设后端返回的字段是Id,你要根据实际情况调整!
    const newPointId = res.Id; 
    // 用函数式更新PointID数组,把新ID加进去
    this.setState(prevState => ({
      PointID: [...prevState.PointID, newPointId]
    }))
  })
  .catch(err => {
    // 处理请求错误,比如网络问题、后端报错
    console.error('提交数据时出错:', err);
  });
};

关键点解释:

  • 函数式更新state:原来直接用this.state.elements的方式,因为setState是异步的,可能会拿到旧的state值,导致数据覆盖。用prevState参数就能确保每次都是基于最新的state来更新。
  • 提取后端返回的ID:你需要确认后端返回的JSON对象里,ID对应的字段名是什么(比如可能是id、pointId或者Id),把res.Id改成对应的字段就行。
  • 错误处理:添加了res.ok的检查和catch块,避免请求失败时没有任何提示,方便调试问题。

这样修改后,每次提交表单数据到后端,拿到返回的ID后就会自动加到PointID数组里啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:07:32