React Hook useEffect缺少setAPIData依赖的ESLint报错求助
解决ESLint提示useEffect缺少setAPIData依赖的问题
首先纠正你代码里的一个关键错误:useState返回的是数组,不是对象,不能用对象解构,得改成数组解构,否则APIdata和setAPIData都会是undefined,直接导致功能失效:
const [APIdata, setAPIData] = useState([]); // 正确写法
针对ESLint的报错,给你两种靠谱的解决办法:
方法一:把setAPIData加入依赖数组
React官方保证,useState返回的setter函数(也就是setAPIData)在组件整个生命周期里都是稳定不变的,把它加入依赖数组不会触发useEffect重复执行,完全安全:
function Read() { const [APIdata, setAPIData] = useState([]); useEffect(() => { const getApiData = async () => { const res = await axios.get(API); setAPIData(res.data); } getApiData(); }, [setAPIData]); // 加入setAPIData到依赖数组 }
方法二:用ESLint注释忽略报错(不推荐,除非你确定不需要依赖)
如果你坚持不想加依赖数组,可以在useEffect上方加一行注释让ESLint跳过检查,但这种做法不建议,可能会掩盖真正的依赖问题:
function Read() { const [APIdata, setAPIData] = useState([]); // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(() => { const getApiData = async () => { const res = await axios.get(API); setAPIData(res.data); } getApiData(); }, []); }
内容的提问来源于stack exchange,提问作者K.M.Yasin
相关产品推荐
相关产品推荐

