> Как использовать useEffect и useState для загрузки и отображения данных в React (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Сбер
Стек: React
> Пример ответа
Для загрузки и отображения данных в React с помощью useEffect и useState используется следующий паттерн:
JSXimport React, { useState, useEffect } from 'react';function DataFetcher() {const [data, setData] = useState(null);const [loading, setLoading] = useState(true);const [error, setError] = useState(null);useEffect(() => {const fetchData = async () => {try {setLoading(true);const response = await fetch('https://api.example.com/data');if (!response.ok) throw new Error('Ошибка загрузки');const result = await response.json();setData(result);} catch (err) {setError(err.message);} finally {setLoading(false);}};fetchData();}, []); // Пустой массив зависимостей - эффект выполняется один раз при монтированииif (loading) return <div>Загрузка...</div>;if (error) return <div>Ошибка: {error}</div>;return <div>{JSON.stringify(data)}</div>;}
Ключевые моменты:
-
useStateуправляет состояниями: данные (data), загрузка (loading), ошибка (error). -
useEffectс пустым массивом зависимостей[]выполняет запрос только при первом рендере (аналогcomponentDidMount). -
Асинхронная функция внутри
useEffectобрабатывает запрос, обновляя состояния через сеттеры. -
Важно обрабатывать ошибки и состояние загрузки для UX.
Для повторной загрузки (например, по кнопке) можно добавить зависимость в массив useEffect или вынести логику в отдельную функцию.
> Похожие задачи по frontend
Есть ли проблемы при инициализации useState функцией в React и как их решить
Корректно ли генерировать уникальный id для ключей в React при отсутствии id в данных с бэка и вызовет ли это проблемы с оптимизацией рендера
Какие архитектурные паттерны используются в React
Какие глобальные state менеджеры существуют для React
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью