Ответ
В последних проектах мой основной стек — это **React** с **TypeScript**. Я предпочитаю его за строгую типизацию, которая значительно снижает количество runtime-ошибок и улучшает поддержку кода.
**Типичная конфигурация проекта:**
* **Ядро:** React 18+ с функциональными компонентами и хуками.
* **Язык:** TypeScript с достаточно строгими настройками (`strict: true`).
* **Стилизация:** CSS-модули или Tailwind CSS для быстрой верстки утилитарными классами.
* **State Management:** Для глобального состояния использовал **Zustand** (легковесный) или **Redux Toolkit** (в больших проектах с командой). Для серверного состояния — **React Query (TanStack Query)** или **SWR**, что избавляет от необходимости ручного управления кэшем, фоновыми обновлениями и инвалидацией.
* **Сборка:** Vite — для скорости разработки.
* **Тестирование:** Jest + React Testing Library для юнит- и интеграционных тестов компонентов.
**Пример компонента с TypeScript и хуками:**
```tsx
import { useState, useEffect } from 'react';
import { useQuery } from '@tanstack/react-query';
import { fetchUserProfile } from '../api/users';
interface UserProfileProps {
userId: number;
}
export const UserProfile: React.FC = ({ userId }) => {
// Использование React Query для управления состоянием запроса
const {
data: user,
isLoading,
error
} = useQuery({
queryKey: ['user', userId],
queryFn: () => fetchUserProfile(userId),
});
if (isLoading) return
);
};
```
Также есть опыт с **Next.js** для SSR/SSG проектов, где критичен SEO или нужна максимальная производительность первого рендера.
Loading...
;
if (error) return Error loading user
;
return (
{user.name}
Email: {user.email}
Role: {user.role}