2. Visual Studio Code: <https://code.visualstudio.com/download>.
3. Google Chrome с расширением React Developer Tools: <https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=ru>.
Всё представленное ПО является бесплатным и свободным для некоммерческого использования.
Для создания первого SPA-приложения создайте пустую папку, откройте её в VS Code и во встроенном терминале выполните следующую команду: `npm create vite@latest ip-lw-f01`.
Она запускает процесс создания простейшего SPA-приложения в папке _ip-lw-f01_.
Для использования React выберите `React` → `TypeScript`.
Не завершая приложения, измените какой-нибудь текст в файле `src/App.tsx`, сохраните файл и убедитесь, что сайт автоматически изменился в браузере без необходимости перезагрузки страницы.
Чтобы понять, что это такое, можете посетить официальный сайт технологии: <https://www.typescriptlang.org/docs/handbook/intro.html>.
Можно почитать эту страницу и другие до _Type Manipulation_.
Также рассмотрите файл `src/App.tsx`.
Благодаря TypeScript среда Visual Studio Code позволяет подсказывать атрибуты у элементов.
Кстати, заметьте, что в tsx-файле (аналог js-файла) прямо внутри JS-кода расположена разметка HTML.
Странно, не так ли?
## Изучение React
Для понимания того, что такое React, рекомендуется ознакомиться с официальной документацией: <https://ru.reactjs.org/docs/getting-started.html> и <https://ru.reactjs.org/tutorial/tutorial.html>.
Знакомство с React очень подробное и понятное.
Вам стоит понять, чем разработка на React отличается от той разработки приложений, что была у вас до этого.
## Создание своих компонентов
Когда вы разобрались, что такое компоненты, давайте добавим собственный.
Предположим, мы хотим добавить компонент, который будет показывать кнопку со счётчиком нажатия.
Для этого в папке `src` можно добавить файл `Counter.tsx` и написать туда следующий код:
```tsx
var Counter = () => {
return (
<div>Тут будет счётчик.</div>
);
};
export default Counter;
```
На текущий момент весь компонент - это один статический `<div>`-элемент с текстом "Тут будет счётчик" без какой-либо внутренней логики.
Чтобы добавить только что созданный компонент в приложение, в `App.tsx` в начале добавьте ссылку на компонент (`import Counter from './Counter';`) и добавьте в разметку рендер компонента (`<Counter/>`).
Теперь поговорим про состояние нашего компонента.
Так как у нас компонент-счётчик, то значение счётчика и есть наше "состояние".
С состоянием можно работать через хук `useState`.
Чтобы объявить состояние-число, необходимо в начале функции в нашем компоненте (до `return (`) объявить переменную счётчик и функцию по обновлению состояния.
Также сразу заиспользуем переменную с состоянием в разметке нашего компонента:
```tsx
import { useState } from 'react'; // Подключаем ссылку на useState.
var Counter = () => {
var [ count, setCount ] = useState(0); // И используем. Значение по умолчанию - 0.
return (
<div>Значение счётчика: {count}.</div>
);
};
export default Counter;
```
Пока у нас нет логики по изменению состояния, поэтому всегда будет отображаться то число, которое указано в `useState`.
Для того, чтобы запустить код на лабораторных компьютерах, можете сформировать архив с кодом лабораторной работы или напрямую загрузить исходные тексты в облачное хранилище.
В ней содержатся исходные тексты всех подключённых библиотек (и библиотек, подключённым к библиотекам, и .... и так далее, в общем), которые можно восстановить в любой момент командой `npm install`.