【发布时间】:2021-07-03 20:58:14
【问题描述】:
我在 react.js 中陷入了无限循环。如何解决这个问题?
useEffect(() => {
fetch("https://react-http-d55a9-default-rtdb.firebaseio.com/todo.json")
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data);
setUsersList((prev) => [...prev]); //cause of infinite loop
});
}, [usersList]);
【问题讨论】:
-
为什么要在 usersList 更改时运行此效果?
-
因为要确保每当 userList 更新时,应该从数据库中获取数据并呈现在屏幕上。
-
为什么在 userList 更改后必须从 db 中获取,而您并没有真正在 HTTP 请求的正文中或作为参数传递 userList?无论如何,API 将返回相同的数据。如果您在通过其他 api 更改时将 userList 持久化到 db,那么您不应该将其保留为效果。相反,您可以将其作为一个函数并从用于将 userList 持久保存在数据库中的 POST 或 PUT api 的
then部分调用该函数。
标签: reactjs dependencies use-effect