[英]Deleted users disappearing after refreshing the page not real time in react
I wanted to select multiple users from table and delete them with real time.我想从表中 select 多个用户并实时删除它们。 When i check db it is deleting selected users but from front end with react it is happening after refreshing the page.
当我检查数据库时,它正在删除选定的用户,但从前端响应它在刷新页面后发生。 Can anyone help me?
谁能帮我? Here is my FE code:
这是我的 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 code: 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);
}
});
Whenever we manage data on react app so we call it state management.每当我们在 react 应用程序上管理数据时,我们称之为 state 管理。 There're some tools & packages to handle state management in react like redux-toolkit and react-query .
有一些工具和包可以处理 state 管理,如redux-toolkit和react-query 。
Now your issue is that data isn't persistent and to make this data persistent you can use plenty of options some of them are redux-toolkit-persistent and react-query.现在你的问题是数据不是持久的,为了使这些数据持久,你可以使用很多选项,其中一些是redux-toolkit-persistent和 react-query。
you're totally wrong about the way handle setState.您对处理 setState 的方式完全错误。 setState can't be multiple in single context like for-loop because setState update the state after re-rendering.
setState 不能在像 for 循环这样的单个上下文中是多个,因为 setState 在重新渲染后会更新 state。 Try this way.
试试这个方法。
const data = await response.json()
setUsers(users.filter(user => !data.find(row => row.id === user.id)))//don't know your properties adjust this code on yourown.
console.log("DELETED ELEMENT", data);
I think you should check out the reference for understanding how state works in react.我认为您应该查看参考资料以了解 state 如何在反应中工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.