Sobes.tech
Back to questions
Junior — Middle
61

Каким образом можно организовать асинхронные вызовы в React, используя хуки?

Answer from AI

sobes.tech AI

В React асинхронные вызовы обычно организуют с помощью хука useEffect. Внутри useEffect можно вызывать асинхронные функции, например, для загрузки данных с сервера. Поскольку сам эффект не может быть асинхронным, внутри него создают и вызывают асинхронную функцию.

Пример:

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

function DataLoader() {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    async function fetchData() {
      try {
        const response = await fetch('https://api.example.com/data');
        const result = await response.json();
        setData(result);
      } catch (error) {
        console.error('Ошибка загрузки данных:', error);
      } finally {
        setLoading(false);
      }
    }

    fetchData();
  }, []); // пустой массив зависимостей — вызов один раз при монтировании

  if (loading) return <div>Загрузка...</div>;
  return <div>Данные: {JSON.stringify(data)}</div>;
}

Такой подход позволяет выполнять асинхронные операции при монтировании компонента и обновлять состояние по мере получения данных.