在这里,我在删除任务后通过react useReducer更新状态.我通过fetch API
发送DELETE
个请求,并在回调函数的末尾发送一个更新状态的操作.但状态不会更新.
const deleteTask = async (event) => {
event.preventDefault();
console.log("delete task");
await fetch("http://localhost:3001/", {
method: "DELETE",
mode: "cors",
headers: {
"Content-type": "application/json",
},
body: JSON.stringify({ _id: state.task._id }),
});
dispatch({ type: "deleteTask", task: undefined });
};
但当我按如下方式更改代码时:
const deleteTask = async (event) => {
event.preventDefault();
dispatch({ type: "deleteTask", task: undefined });
console.log("delete task");
await fetch("http://localhost:3001/", {
method: "DELETE",
mode: "cors",
headers: {
"Content-type": "application/json",
},
body: JSON.stringify({ _id: state.task._id }),
});
};
重新渲染发生,即状态被更新.谁能告诉我为什么会发生这种事?
这是我的delete
减速器功能.
else if (action.type === "deleteTask") {
return {
...state,
isEditing: !state.isEditing,
task: action.task,
};
}