我正在使用react useEffect从后端获取数据,但是它会不停地向我的终端发送相同的消息。
我的代码
function DataFetching() {
let [posts, setPosts] = useState([]);
useEffect(() => {
axios.get('http://localhost:8080/zoom')
.then(res => {
setPosts(res.data);
})
.catch(err => {
console.log(err)
})
})
我在终端收到的垃圾邮件
Executing (default): SELECT `id`, `subject`, `MEETINGID`, `Password`, `createdAt`, `updatedAt` FROM `data` AS `data`;```
答案 0 :(得分:2)
setPosts()
导致DataFetching
重新渲染,并且由于您的useEffect()
未声明依赖项列表,因此它会在每个渲染后评估效果,因此您基本上已经编写了一个异步无限循环。
您的效果仅取决于setPosts()
,因此应将其声明为唯一的依赖项。或者,认识到setPosts()
已经被React记住,根本不声明任何依赖项:
useEffect(() => {
axios.get('http://localhost:8080/zoom').then(res => {
setPosts(res.data);
}).catch(err => {
console.log(err);
});
}, [/*setPosts*/]);