我想从表中选择多个用户,并真实的删除它们。当我检查数据库时,它正在删除选定的用户,但从前端的React,它是在刷新页面后发生的。有人能帮助我吗?这里是我的FE代码:
const handleDeleteUser = async () => {
const response = await fetch(`http://localhost:3001/users/deleteUsers`, {
method: "DELETE",
body: JSON.stringify(isChecked),
headers: {
"Content-Type": "application/json",
},
});
if(response.status === 200){
const data = await response.json()
for (let i = 0; i < data.length; i++) {
const element = data[i];
setUsers(users.filter((e) => e._id !== element))
console.log("DELETED ELEMENT",element);
}
}
};
BE代码:
userRouter.delete("/deleteUsers", async (req, res, next) => {
try {
const selectedUsers = req.body;
// HARD DELETE
UsersModel.deleteMany(
{
_id: {
$in: selectedUsers,
},
},
function (err, result) {
if (err) {
res.status(404).send(err);
} else {
res.status(200).send(selectedUsers);
}
}
);
} catch (error) {
next(error);
}
});
2条答案
按热度按时间d7v8vwbk1#
处理setState的方式完全错误。setState不能像for-loop那样在单个上下文中是多个,因为setState在重新渲染后会更新状态。请尝试这种方式。
我想你应该看看参考资料,了解状态是如何在React中工作的。
daolsyd02#
每当我们在react应用程序上管理数据时,我们就称之为状态管理。在react中有一些工具和包可以处理状态管理,如redux-toolkit和react-query。
现在,您的问题是数据不是持久的,要使数据持久,您可以使用许多选项,其中包括redux-toolkit-persistent和react-query。