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

React中使用Axios按ID删除车辆数据无效果,如何解决?

修复方案

核心问题定位

  • 问题1:this.state.cars是数组类型,直接访问this.state.cars.idCars得到的是undefined,传给删除接口的ID无效,后端无法定位要删除的数据,所以返回空数组且没有执行删除操作
  • 问题2:删除按钮点击事件没有绑定当前行对应的车辆ID,无法确定用户要删除哪条数据
  • 问题3:删除成功后先执行了路由跳转,后续的列表刷新逻辑不会在原页面生效

具体修复代码

1. 修正删除按钮的点击事件,传入当前车辆ID

修改render方法内的按钮逻辑:

<button  
  className="btn btn-danger"  
  onClick={() => this.deleteC(data.idCars)}
>
  Remove
</button>

2. 改造deleteC方法,接收传入的ID作为参数

deleteC(targetId) {    
  DataService.delete(targetId)
    .then(response => {
      // 先刷新列表,再跳转路由
      this.refreshList();
      this.props.history.push('/Classement');
    })
    .catch(e => {
      console.log(e);
    });
}

可选优化:无需跳转可直接更新当前页列表

如果删除后不需要跳转到其他页面,可以直接在前端过滤已删除数据,减少接口请求:

deleteC(targetId) {    
  DataService.delete(targetId)
    .then(response => {
      this.setState({
        cars: this.state.cars.filter(item => item.idCars !== targetId)
      })
    })
    .catch(e => {
      console.log(e);
    });
}

额外排查点

如果修改后仍有问题,可以先在deleteC方法开头打印targetId,确认ID是否正确传递;再检查后端删除接口的路径、请求方式是否和前端调用逻辑匹配,是否要求额外的请求头/参数。
如果你的get/${id}接口返回的是单个车辆对象而非数组,还需要修改getCar内的setState逻辑,避免数组map报错:

this.setState({
  cars: [response.data]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:39:03