Один из способов — использовать ключевые слова async и await, которые позволяют писать асинхронный код в синхронном стиле. Вот пример компонента, который выполняет асинхронный вызов API с использованием async и await:

import React, { useState, useEffect } from "react"
 
function MyComponent() {
  const [data, setData] = useState(null)
 
  useEffect(() => {
    async function fetchData() {
      const response = await fetch("https://example.com/get-data")
      const data = await response.json()
      setData(data)
    }
    fetchData()
  }, [])
 
  return <div>{data ? <div>{data.message}</div> : <div>Loading...</div>}</div>
}

Другой способ обработки асинхронных функций в React — использование библиотеки, такой как axios или fetch, для выполнения API вызовов. Вот пример использования axios:

import React, { useState, useEffect } from "react"
import axios from "axios"
 
function MyComponent() {
  const [data, setData] = useState(null)
 
  useEffect(() => {
    async function fetchData() {
      const response = await axios.get("https://example.com/get-data")
      setData(response.data)
    }
    fetchData()
  }, [])
 
  return <div>{data ? <div>{data.message}</div> : <div>Loading...</div>}</div>
}

Если про fetch было рассказано ранее, то поднимем тему, что такое axios, преимущества axios перед fetch.

Axios — это широко известная JavaScript-библиотека. Она представляет собой HTTP-клиент, основанный на промисах и предназначенный для браузеров и для Node.js.

fetchaxios
Использованиевстроенный объект в JSсторонняя библиотека
Базовый синтаксисболее объемный кодменее объёмный код
Множественные запросыpromise.allaxios.all
Поддержка браузера---имеет лучшую обратную поддержку браузеров.
HTTP-перехватчикине предоставляет способ сделать это по умолчаниюобеспечивает простой и легкий способ использования перехватчиков HTTP
Размер связкивстроендобавит некоторую дополнительную зависимость, поскольку это сторонняя библиотека (371КБ)
Безопасностьтоже имеет встроенную защиту (но сложнее)имеет встроенную защиту XSRF (подделка межсайтовых запросов)
Обработка ошибокне выдаёт сведения о сетевых ошибкахвыдаёт сведения о сетевых ошибках
Статус загрузкинет такой возможностивстроенная возможность

Назад