Вопрос проверяет знание жизненного цикла React-компонентов и правильного места для выполнения побочных эффектов, таких как загрузка данных с сервера.
В React для выполнения побочных эффектов, таких как загрузка данных с сервера, используется хук useEffect. Этот хук вызывается после того, как компонент был отрендерен и добавлен в DOM. Это гарантирует, что у нас есть доступ к DOM-элементам и что запрос не блокирует первоначальный рендер.
Чтобы загрузить данные только один раз при монтировании компонента, необходимо передать пустой массив зависимостей вторым аргументом в useEffect. Это эквивалентно методу componentDidMount в классовых компонентах.
import React, { useState, useEffect } from 'react';
function UserList() {
const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('/api/users')
.then(response => response.json())
.then(data => {
setUsers(data);
setLoading(false);
})
.catch(error => console.error('Error:', error));
}, []); // Пустой массив зависимостей
if (loading) return <div>Loading...</div>;
return (
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}useEffect, лучше объявить её внутри и вызватьuseEffectВывод: Использование useEffect с пустым массивом зависимостей является стандартным и рекомендуемым способом загрузки данных при монтировании компонента в React. Это обеспечивает предсказуемое поведение и предотвращает утечки памяти.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию