React Hook useEffect :使用 axios 和 async await .api 获取数据,调用连续相同的 api

Posted

技术标签:

【中文标题】React Hook useEffect :使用 axios 和 async await .api 获取数据,调用连续相同的 api【英文标题】:React Hook useEffect : fetch data using axios with async await .api calling continuous the same api 【发布时间】:2020-01-06 01:27:12 【问题描述】:

当我从API 获取数据并使用useEffect 将响应设置为数组时 它调用API 重复连续。

let [product, setproduct] = useState([]);

async function fetchData() 
    let response = await axios(
      `api`
    );
    let user = await response.data;
    setproduct(user);
    console.log(product);
  

  useEffect(() => 
    fetchData();
  ); 

【问题讨论】:

【参考方案1】:

将空的 [] 作为第二个参数传递给 useEffect 方法。它将在初始渲染时调用,如下所示。

  useEffect(() => 
    fetchData();
  , []); 

【讨论】:

【参考方案2】:

来自docs,

useEffect 是否在每次渲染后运行? 是的!默认情况下,它会在第一次渲染后和每次更新后运行。 (我们稍后会讨论如何自定义它。)与其考虑“安装”和“更新”,您可能会发现更容易认为效果发生在“渲染后”。 React 保证 DOM 在运行效果时已经更新。

您可以提供空的依赖数组/[] 作为useEffect 的第二个参数,它与componentDidMount 相同,在组件生命周期中只执行一次。

useEffect(() => 
    fetchData();
, []); //This will run only once 

【讨论】:

以上是关于React Hook useEffect :使用 axios 和 async await .api 获取数据,调用连续相同的 api的主要内容,如果未能解决你的问题,请参考以下文章

React常用hook的优化useEffect浅比较

我应该如何测试使用 Typescript 进行 api 调用的 React Hook “useEffect”?

react之Hook的useEffect详解

React Hook useEffect 缺少依赖项:'props'

反应 | React Hook useEffect 缺少依赖项

使用 useEffect React Hook 时出现错误 400 和 200