react-hooks - useEffect 导致无限循环
问题描述
我搜索 SO 帖子“useEffect 导致无限循环”,看起来还有 36 个其他关于此的 SO 帖子。大多数答案都说要传入一个依赖数组。像这样的东西...
useEffect(() => {
// do something and then do ...
setMatch(match);
},[match]);
好吧,这就是我尝试过的。我尝试过的所有 useEffect() 仍然给我无限循环。
我试过这个(没有依赖数组)
useEffect(()=> {
const url = 'http://localhost:8000/rest-auth/user/';
const withCredentials = true;
const method = 'get';
axios.request({method, url, withCredentials}).then(response => {
setAppUser({...appUser, ...response.data});
setLoggedIn(true);
})
});
我试过这个(空依赖数组)
useEffect(()=> {
const url = 'http://localhost:8000/rest-auth/user/';
const withCredentials = true;
const method = 'get';
axios.request({method, url, withCredentials}).then(response => {
setAppUser({...appUser, ...response.data});
setLoggedIn(true);
})
}, []);
我试过这个(放入appUser
依赖数组)
useEffect(()=> {
const url = 'http://localhost:8000/rest-auth/user/';
const withCredentials = true;
const method = 'get';
axios.request({method, url, withCredentials}).then(response => {
setAppUser({...appUser, ...response.data});
setLoggedIn(true);
})
}, [appUser]);
更新:我试过这个:
useEffect(()=> {
const url = 'http://localhost:8000/rest-auth/user/';
const withCredentials = true;
const method = 'get';
axios.request({method, url, withCredentials}).then(response => {
setAppUser((appUser) => ({...appUser, ...response.data}));
setLoggedIn(true);
})
}, []);
上述所有四种方法都会导致无限循环。
解决方案
推荐阅读
- python - 如何在 python 3.6.9 中将 dbf 转换为 csv?
- javascript - jQuery - 检查目标是否是特定的 div
- android - 在将 Android 应用程序集成到 Firebase 远程配置时,如何使用 2 个 google-services.json(一个用于 PROODUCTION,另一个用于 QA 环境)?
- python-3.x - 使用 Python 和 PyDrive 在谷歌驱动器上成功上传文件,但文件已损坏
- string - 如何连接 Rust Vector 的两个 `&str` 类型元素并添加到零索引
- smt - smt2 中的类型不匹配
- c# - 当集合为空时,UWP XAML 引发未处理的异常
- php - 在 MySql 中使用 JSON+PHP 插入 \ 字符
- node.js - 如何在 node.js 中使用 jsconfig 设置路径别名
- java - 如何从 Firebase 获取特定键的特定子值