首页 > 解决方案 > Http PUT 删除未更改的数据

问题描述

我正在尝试编辑 JSON 班次数据库。我正在使用 React 编写 Javascript。这是我对 PUT 语法的理解:

const editShift = async (changed, id) => {

  const res = await fetch(`http://localhost:5000/shifts/${id}`, {
    method: 'PUT', 
    headers: {
    'Content-type': 'application/json' 
    },
    body: JSON.stringify(changed)
 })
 const data = await res.json()
 setShifts([...shifts, data])
}

数据.json:

{
  "shifts": [
    {
      "title": "test",
      "startDate": "2018-06-25T07:30:00.000Z",
      "endDate": "2018-06-25T08:00:00.000Z",
      "allDay": false,
      "id": 1
    },
    {
      "title": "test2",
      "startDate": "2018-06-28T07:30:00.000Z",
      "endDate": "2018-06-28T08:00:00.000Z",
      "allDay": false,
      "id": 2
    }
  ]
}

结果是新班次将仅保留已更改的字段并删除其余字段。任何想法为什么?

标签: javascriptreactjshttprequestput

解决方案


要获得以前的班次,您应该在 setShifts 中使用回调,例如:

setShifts(prevShifts => ([...prevShifts, data]))

推荐阅读