Sobes.tech
Назад к вопросам
Middle+
2

/** * Написать компонент который будет получать пользователя по {{userId}} и выводить основные данные * Для запроса использовать fetchUser */ export const User: FC<Props> = ({ userId }) => { // Write your solution here: const user = userId && fetchUser({ id: userId }); if (!user) return null; return ( <div className="stack column"> <div>UserId: </div> <div>UserName: </div> </div> ); };

Компании, где спрашивали
HR SIGNAL

Ответ от нейросети

sobes.tech AI

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

interface Props { userId: string; }

interface User { id: string; name: string; // другие поля по необходимости }

// Предполагается, что fetchUser возвращает Promise<User> async function fetchUser(params: { id: string }): Promise<User> { // Реализация запроса к API const response = await fetch(/api/users/${params.id}); if (!response.ok) throw new Error('Failed to fetch user'); return response.json(); }

export const User: FC<Props> = ({ userId }) => { const [user, setUser] = useState<User | null>(null); const [loading, setLoading] = useState<boolean>(false); const [error, setError] = useState<string | null>(null);

useEffect(() => { if (!userId) { setUser(null); return; } setLoading(true); setError(null); fetchUser({ id: userId }) .then(setUser) .catch(() => setError('Ошибка загрузки пользователя')) .finally(() => setLoading(false)); }, [userId]);

if (loading) return <div>Загрузка...</div>; if (error) return <div>{error}</div>; if (!user) return null;

return ( <div className="stack column"> <div>UserId: {user.id}</div> <div>UserName: {user.name}</div> </div> ); };