reactjs - React Hook useEffect 缺少依赖项 - 问题
问题描述
我收到了这个错误,我真的无法解决它:
src/api/ConnectApi.js
Line 25:8: React Hook useEffect has missing dependencies: 'apiurl', 'dataState', and 'fetch'. Either include them or remove the dependency array. You can also do a functional update 'setDataState(d => ...)' if you only need 'dataState' in the 'setDataState' call react-hooks/exhaustive-deps
这是我在 ConnectApi.js 中的内容
import axios from 'axios';
import { useEffect, useState } from 'react';
const useCollectData = (url) => {
useEffect(() => {
const [fetch, setFetching] = useState({isFetching: false})
const [dataState, setDataState] = useState({data: []});
const [apiurl] = useState(url);
const fetchDataFromApi = async () => {
try{
setFetching({isFetching: true})
const response = await axios.get(apiurl)
setDataState({...dataState, data: response.data});
}
catch (error){
setFetching({...fetch, isFetching: true})
}
};
fetchDataFromApi();
// eslint-disable-next-line react-hooks/exhaustive-deps
},[]);
return [dataState]
};
export default useCollectData
我尝试将 apiurl、dataState 和 fetch 添加到依赖项数组,但它不能解决问题。
解决方案
useState
应该在外面声明useEffect
。
const [fetch, setFetching] = useState({isFetching: false})
const [dataState, setDataState] = useState({data: []});
const [apiurl] = useState(url);
useEffect(() => {
const fetchDataFromApi = async () => {
try{
setFetching({isFetching: true})
const response = await axios.get(apiurl)
setDataState({...dataState, data: response.data});
}
catch (error){
setFetching({...fetch, isFetching: true})
}
};
fetchDataFromApi();
eslint-disable-next-line react-hooks/exhaustive-deps
},[]);
推荐阅读
- android - 在ListView里面flutter两个ListView.builder
- rasa - rasa shell 命令像 rasa train nlu 一样工作
- javascript - js bind() 函数如何详细工作?
- node.js - 使用nodejs在mongodb中删除对象形式的嵌套数组
- javascript - 在javascript中获取值json到字符串的函数
- azure-devops - Azure Pipelines - 有没有办法查看文件夹结构?
- python - AWS lambda无缘无故返回基于python的简单返回json代码的内部服务器错误
- java - 使用 Java Spring JPA 为 liquibase 中的表名添加前缀
- python - Python字符串按特定字符拆分
- php - Php,依赖注入,如何替换对象(用于测试)?