Отзывчивое приложение на React менее чем за 30 минут
В сегодняшней статье мы шаг за шагом создадим небольшое, но многофункциональное адаптивное приложение React с нуля быстрым и удобным для разработчиков способом, используя Material UI.
MUI предоставляет простую, настраиваемую и доступную библиотеку компонентов React.
В нашем приложении будут следующие функции:
- Сворачиваемый контент с носителями (Home)
- Сортируемая таблица данных с разбивкой по страницам (About Us)
- Форма с разными категориями входных данных (Contact Us)
- Адаптивная галерея изображений. (Shop)
Требования:
- Очень базовые знания React, некоторое представление о хуках
- Минимальный опыт работы с пользовательским интерфейсом Material UI
Material UI терминология:
- App Bar — встроенный компонент, который является базовой навигацией по веб-сайту
- Toolbar — структура элементов навигационной панели, т.е. строка / столбец
- Material Icons — включает более 2100 официальных значков шрифтов Google Material, преобразованных в компоненты SvgIcon.
- Typography — используется для оформления текстового контента на веб-сайте
- Tabs — они помогают организовать и разрешить навигацию между группами контента, которые связаны и находятся на одном уровне иерархии, например: ссылки на меню
- Drawer — он обеспечивает доступ к местам назначения в вашем приложении.
- useMediaQuery — это CSS-хук медиа-запроса для React. Он прослушивает совпадения с медиа-запросом CSS. Это позволяет отображать компоненты в зависимости от того, соответствует запрос или нет.
- useTheme — настройте MUI в соответствии с вашей темой. Вы можете изменить цвета, типографику и многое другое.
Шаги создания
Чтобы создать новое приложение React, выполните приведённую ниже команду в вашем терминале:
Перейдите в папку "my-responsive-app" и выполните приведённую ниже команду, чтобы запустить приложение:
Приложение будет отображаться в браузере по URL, http://localhost:3000 .
Далее мы установим несколько значков пользовательского интерфейса Material UI:
Давайте испачкаем наши руки… 🤓
Пожалуйста, установите расширение React Snippets, чтобы быстрее писать код на React. Он предоставляет вам фрагменты React / Redux для VS code.Он поддерживает:JavaScript (.js) / JavaScript React (.jsx)TypeScript (.ts) / TypeScript React (.tsx)
Выполнив описанные выше действия по установке, вы можете перейти в свой редактор кода, удалить весь код по умолчанию из src/App.js файла и обновить его, как показано ниже:
Создайте новый заголовок компонента в папке src и импортируйте его внутри компонента приложения. Компонент заголовка будет иметь Appbar по умолчанию, предоставляемый Material UI, мы также добавляем Toolbar для выравнивания элементов панели приложений в строке.
Добавьте образец значка логотипа из библиотеки пользовательского интерфейса Material UI.
Настройте стиль компонента AppBar в соответствии с вашими потребностями:
Теперь мы создадим меню в базовом стиле с кучей ссылок, используя компонент Tabs в Material UI, как показано ниже:
Мы добавляем реквизит ‘indicatorColor’ в компонент Tabs для отображения текущей нажатой или активной ссылки с подчёркиванием, которое будет отличать её по внешнему виду от других ссылок меню. Активной ссылке по умолчанию присвоено значение "home"
Затем мы используем хук ‘useState’ для сохранения значения текущего выбранного пункта меню в переменной состояния ‘selectedMenu’. Поскольку это входная переменная, мы используем событие ‘onChange’ для отслеживания значения последней нажатой ссылки.
Давайте теперь добавим компонент панели "search", используя стилизованный ввод и значок поиска, и импортируем его в App.js:
После добавления логотипа, меню и панели поиска мы добавим кнопку "login" в наше приложение.
К концу вышеуказанных шагов ваше приложение будет выглядеть так, как показано на рисунке ниже:
На данный момент, если изменить размер вашего окна, то вкладки и кнопки начнут перекрываться и полностью разорвут страницу, потому что мы еще не сделали её адаптивной 😂
Теперь мы все “оживим”! 🤩
Адаптивный веб-дизайн (RWD) - это подход к веб-разработке, который создаёт динамические изменения внешнего вида веб-сайта в зависимости от размера экрана и ориентации устройства, используемого для его просмотра.
Более подробную информацию об адаптивном веб-дизайне можно найти здесь.
Давайте теперь сделаем наше приложение отзывчивым.
Мы создадим пользовательский компонент DrawerComp, используя функцию ‘drawer’ из Material UI.
Как мы можем видеть в приведённом выше фрагменте кода, внутри компонента DrawerComp мы храним значения открытия и закрытия drawer в переменной состояния и переключаем значение на true / false с помощью функции onClick, установленной на кнопке MenuIcon. Drawer содержит список ссылок, например, для входа в систему (login).
Теперь мы добавим useMediaQuery & useTheme hooks из Material UI, чтобы выборочно отображать содержимое страницы в соответствии с текущим размером экрана.
useTheme hook предоставляет нам объект ‘theme’, как показано на рисунке ниже. У него есть свойство с именем ‘breakpoint’, которое содержит массив ‘keys’ со всеми размерами экрана, такими как (x-small, small, medium, large, x-large).
Здесь мы создаём 2 константы массива со всеми ссылками на пункты меню и перебираем их, чтобы создать меню вкладок и компонент меню внутри ящика.
Теперь ваше приложение будет выглядеть так, как показано ниже, на экранах меньшего размера:
Соберите содержимое “Tab”
Home — Теперь мы добавим компонент Card, который содержит следующие подкомпоненты:
- CardHeader — текстовый заголовок и подзаголовок
- CardMedia — Изображения или видео (медиа), которые будут связаны с содержимым карты
- CardContent — Текстовое описание
- CardActions — Пользователь может выполнять такие действия, как добавление в избранное / поделиться в социальных сетях
- Expandmore — Пользовательский компонент, который в основном представляет собой ссылку “узнать больше”.
- Collapse — компонент пользовательского интерфейса материала для отображения/скрытия дополнительного описания
About Us — На этой вкладке мы будем создавать компонент Data-grid. Мы будем отображать данные в табличной форме,
Вам нужно будет выполнить приведенную ниже команду в терминале:
Таблицы данных отображают информацию в сетчатом формате строк и столбцов. Они организуют информацию таким образом, чтобы её было легко сканировать, чтобы пользователи могли искать закономерности и идеи.
Contact Us — На этой вкладке мы создаём форму с различными категориями полей ввода, такими как текст, номер, поле выбора, ввод и только для чтения.
Shop — на этой вкладке отображается галерея “image”, структура и изображения которой являются адаптивными и автоматически настраиваются в соответствии с размером экрана. Для создания этой галереи мы будем использовать “woven” вариант макета из библиотеки MUI.
Полный код
Полный исходный код этого приложения можно найти в этом репозитории.
Пожалуйста, обратите внимание, что это бета-версия, дальнейшие улучшения и исправления ошибок будут добавлены в следующих статьях очень скоро. Не стесняйтесь делиться, создавать, тестировать, открывать этот проект.
Заключение
По мере того, как React продолжает развиваться и раздвигать границы возможностей фронтенд-разработчиков, нам также необходимо переосмыслить способы создания наших приложений. Мы должны сделать их надёжными, масштабируемыми, простыми в модификации, слабо связанными и более быстрыми в сборке.
Библиотеки, подобные MUI, помогают нам достичь скорости без ущерба для качества и доступности.
Имейте в виду, что это не единственный подход к ускорению создания приложений React, но это действительно оптимальное решение, простое, которое вы можете сделать сами, даже если у вас есть только базовые знания в области веб-разработки.
Статья была взята из этого источника: