反应异步 API 调用

Posted

技术标签:

【中文标题】反应异步 API 调用【英文标题】:React async API call 【发布时间】:2022-01-19 16:12:53 【问题描述】:

我正在尝试理解其他人的代码, 我有这个组件:

import React from 'react';
import  useEffect, useState  from 'react';

export default function CountriesList( searchValue ) 
  const [data, setData] = useState([])

  //Onmount
  useEffect(() => 
    async function init() 
      //API Calls- request data from the server
      const response = await fetch('https://restcountries.com/v2/all');
      const body = await response.json();
      setData(body);
    
    init()
  , [])//dependencies array
  return (
    <div className="countries-container">
      data
        .filter(country => country.name.toLowerCase().includes(searchValue.toLowerCase()))
        .map((country) => 
          const  name, flag  = country;
          return (
            <div key=name className="country-container">
              <h3 className="title">name</h3>
              <img src=flag    />
            </div>
          )
        )
    </div>
  )

在init()里面,程序员又调用了init(),你能解释一下为什么吗? 我试图寻找这种编程风格,但没有找到任何东西。 whiteout 这一行 API 调用不起作用。

谢谢!

【问题讨论】:

【参考方案1】:

我可能弄错了,但据我所知,init 函数是在声明后立即声明和调用的。

看看这个:https://github.com/facebook/react/issues/14326

【讨论】:

以上是关于反应异步 API 调用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 api 调用中使用异步等待获取在反应本机中通过基本身份验证

使用 RxSwift 的反应式异步反馈系统

如何同步节点中的两个异步调用?

如何取消 useEffect 清理函数中的所有订阅和异步任务?

用于反应中多个异步调用的单个减速器,redux

对 api 服务器的多个异步请求(即发即弃)