# Client - React Query Integration ## Установленные пакеты - `@tanstack/react-query` - управление серверным состоянием - `ky` - современный HTTP-клиент ## Структура ### `/src/lib` - `api.ts` - конфигурация HTTP-клиента (ky) - `queryClient.ts` - конфигурация React Query ### `/src/hooks` - `useAuth.ts` - хуки для аутентификации - `useLogin()` - вход - `useRegister()` - регистрация - `useMe()` - получение текущего пользователя - `useLogout()` - выход ### `/src/types` - `auth.ts` - TypeScript типы для аутентификации ## Примеры использования ### Логин ```tsx import { useLogin } from "../hooks/useAuth"; function LoginPage() { const loginMutation = useLogin(); const handleSubmit = async (data) => { try { await loginMutation.mutateAsync(data); // Успешный логин } catch (error) { // Обработка ошибки } }; return (
{/* форма */} {loginMutation.isPending &&

Загрузка...

} {loginMutation.isError &&

Ошибка!

}
); } ``` ### Получение текущего пользователя ```tsx import { useMe } from "../hooks/useAuth"; function Profile() { const { data: user, isLoading, isError } = useMe(); if (isLoading) return
Загрузка...
; if (isError) return
Ошибка
; return
Привет, {user?.name}!
; } ``` ### Выход ```tsx import { useLogout } from "../hooks/useAuth"; function LogoutButton() { const logoutMutation = useLogout(); return ( ); } ``` ## Фичи ### API клиент (ky) - Автоматическое добавление Bearer токена из localStorage - Префикс URL для всех запросов - JSON по умолчанию ### React Query - Автоматическое кэширование (5 минут) - Retry логика для запросов - Оптимистичные обновления - Автоматическая инвалидация кэша