Для работы с библиотекой React Aria необходимо создать современный проект на React, где будет обеспечена поддержка последних стандартов JavaScript и оптимизированный процесс сборки. Наиболее быстрый способ — использование Vite, который обеспечивает молниеносную разработку и интеграцию с TypeScript, если это необходимо.
В терминале выполняется команда:
npm create vite@latest my-react-aria-app
my-react-aria-app — имя проекта.После создания проекта переходят в его каталог:
cd my-react-aria-app
Vite создает минимальный проект с базовой конфигурацией. Чтобы добавить React Aria, устанавливают следующие пакеты:
npm install @react-aria/button @react-aria/menu @react-aria/overlays @react-stately/button
Также рекомендуется установить react и
react-dom версии 18 и выше:
npm install react@18 react-dom@18
Если выбран проект с TypeScript, убедитесь, что в
tsconfig.json включены следующие опции:
{
"compilerOptions": {
"strict": true,
"jsx": "react-jsx",
"esModuleInterop": true,
"moduleResolution": "node"
}
}
Это обеспечит строгую типизацию и корректное использование JSX с React 18.
Файл конфигурации vite.config.js или
vite.config.ts уже содержит базовую настройку. Для
интеграции с React Aria можно убедиться, что подключен плагин React:
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
server: {
port: 5173,
open: true
}
});
Рекомендуемая структура для проекта с React Aria:
my-react-aria-app/
├─ public/
├─ src/
│ ├─ components/
│ │ ├─ Button.tsx
│ │ ├─ Menu.tsx
│ │ └─ Modal.tsx
│ ├─ App.tsx
│ ├─ main.tsx
│ └─ styles.css
├─ package.json
├─ vite.config.ts
└─ tsconfig.json
В src/main.tsx должен быть минимальный рендер:
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import './styles.css';
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
document.getElementById('root')! — использование
non-null assertion для TypeScript.Для запуска локального сервера используется команда:
npm run dev
Vite автоматически стартует сервер на
http://localhost:5173, поддерживая Hot Module
Replacement (HMR) для мгновенного обновления интерфейса при
изменениях.
React Aria не требует встроенной стилизации, поэтому все визуальные эффекты и темы нужно добавлять вручную через CSS или CSS-in-JS. Например, для базовой кнопки:
.button {
padding: 8px 16px;
background-color: #1e90ff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
.button:focus {
outline: 2px solid #ffbf00;
}
Это обеспечивает видимость фокуса и соответствие стандартам доступности.
Создать минимальный компонент кнопки:
import { useButton } from '@react-aria/button';
import { useRef } from 'react';
export function AriaButton(props: { onPress: () => void; children: React.ReactNode }) {
const ref = useRef<HTMLButtonElement>(null);
const { buttonProps } = useButton(props, ref);
return (
<button {...buttonProps} ref={ref}>
{props.children}
</button>
);
}
useButton автоматически обрабатывает события
клавиатуры, фокус и роль для скринридеров.ref передается в DOM-элемент, что обязательно для
корректной работы хуков React Aria.Эта настройка создаёт полностью функциональную базу для использования React Aria в современных приложениях на React с Vite, обеспечивая быструю разработку, строгую типизацию и соответствие стандартам доступности.