我具有使用提取API的删除功能,但是在删除时,出现此错误data.json is not a function
这是我的代码
export const deleteLeaveType = async id => {
const response = await fetch(
`${API_LINK}/route/route/route/${id}`, {
method: 'delete',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${Auth.getToken()}`,
},
}
);
return getData(response);
};
我正在另一个文件中调用它
const deleteLeaveType = async id => {
let deleteLeaveType = isLeaveType.filter(
item => item.id !== id
);
await CalendarManagementAPI.deleteLeaveType(id)
.then(data => {
console.log(data.json());
setLeaveType(deleteLeaveType);
});
setLoadingLeaveTypes(false);
fetchLeaveTypes();
})
.catch(error => {
console.log(error);
});
};
如评论中所述,您不应与async
同时使用await
/ .then()
。这是两种处理异步功能的方法,因此一次只能使用一种。
在deleteLeaveType
功能中,如果您更喜欢使用.then
处理异步功能,则可以摆脱async
和await
,如下所示:
// remove 'async' from function declaration
const deleteLeaveType = id => {
// keep original code
// remove 'await'
CalendarManagementAPI.deleteLeaveType(id)
.then(data => {
// ... everything else the same
};
我也建议对两个函数和数组不要使用相同的变量名deleteLeaveType
。这可能会使您在任何给定时刻所引用的内容感到困惑。