Автор: Владилен Минин
React — обязательный инструмент для современного разработчика React — это библиотека JavaScript с открытым исходным кодом, которая используется для создания пользовательского интерфейса. Она была создана компанией Facebook и представлена разработчикам в 2013 году. Это инструмент, который идеально подходит для разработки масштабируемых веб-приложений. Еще больше он подходит для создания SPA-приложений (single page application) — приложений, использующих один HTML-шаблон для всех страниц приложения. Концепция React построена на разделении пользовательского интерфейса на отдельные самодостаточные части — компоненты, которые довольно просто поддерживать и расширять. Вы даже можете создать отдельные компоненты, а потом использовать их в различных проектах, легко перенося их из одного проекта в другой. Еще одной особенностью является использование JSX. JSX представляет собой комбинацию кода JavaScript и XML, и простой, интуитивно понятный способ для определения кода визуального интерфейса. Конечно, при работе с React не обязательно использовать JSX. При разработке можно использовать обычный JavaScript, но: JSX проще в написании; легче читается и упрощает обслуживание; запускается быстрее, чем такой же код на JavaScript. Библиотека React изначально разработана для создания пользовательских интерфейсов и поэтому не включает некоторых инструментов традиционного JS-фреймворка. Это позволяет выбирать лишь необходимые библиотеки под конкретные задачи, существенно снижая нагрузку на приложение и сервер. Библиотека не диктует требований к остальной части технологического стека, поэтому вы можете создавать новые функции в React без перезаписи существующего кода. React может также функционировать на сервере в виде NodeJS, а также создавать приложения для мобильных устройств с помощью React Native.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке вы узнаете, что такое React. Вы познакомитесь с основными терминами, узнаете область применения данной технологии и на простых примерах увидите, как работают React компоненты. После этого мы разберем, как генерировать React проекты с помощью инструмента create react app, и рассмотрим набор файлов, которые используются для разработки.
В данном уроке мы разберем, что такое React, почему стоит использовать именно его, в чем его преимущество перед другими библиотеками.
В данном уроке вы узнаете, как работает React. Мы разберем элементарное приложение, где увидим основные ключевые моменты, которые позволяют работать React.
В данном уроке вы узнаете о том, что такое компоненты, какие задачи они решают, и почему выгодно использовать именно компонентный подход при сайтостроении.
В данном уроке вы узнаете об очень удобном инструменте, который позволяет моментально сгенерировать приложение на React с уже готовой инфраструктурой: сервером быстрой перезагрузки, тестами, автопрефиксами и многими другими инструментами, упрощающие разработку.
В данном уроке мы пройдемся по каждому файлу, который появился в проекте, и познакомимся с каждым из них.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке вы узнаете о специальном синтаксисе в React — JSX. Как работать с данным синтаксисом, какие у него есть ограничения, и увидите множество вариантов использования его в проекте с React.
В данном уроке вы узнаете, чем на самом деле является JSX, и как он работает.
В данном уроке вы узнаете об основных ограничениях в синтаксисе, которые нельзя нарушать.
В данном уроке вы узнаете, как задавать Inline стили в JSX.
В данном уроке вы узнаете о таком понятии, как функциональный компонент, как он создается, и увидите три вариации его создания.
В данном уроке вы узнаете, как выводить динамические данные в JSX.
В этом уроке вы узнаете, как передавать параметры другим компонентам в JSX.
В этом уроке вы узнаете о следующем виде параметров, и как передавать любой контент компоненту.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке мы начнем знакомство с библиотекой React. Вы узнаете об основных понятиях, которые входят в React, научитесь обрабатывать формы, изменять State, работать со списками и многое другое. В конце данного блока вы будете понимать основные принципы работы React компонентов.
В этом уроке вы познакомитесь с таким понятием, как State, узнаете, зачем он нужен, какие задачи решает, и как его можно проинициализировать.
В это уроке вы узнаете, как добавить прослушку любого события в React компоненте.
В данном уроке вы узнаете о том, как изменять State в React и сделать так, чтобы компонент реагировал на изменения и менял отображение компонента.
В данном уроке вы узнаете о всех способах передачи кастомных параметров в функции, которые обрабатываются в JSX.
В данном уроке вы узнаете, как правильно обрабатывать элементы формы.
В данном уроке вы узнаете, как работать со списком элементов, какие есть методы для вывода однотипных элементов, и какие особенности есть при работе со списками в React.
В данном уроке вы научитесь работать с отображением различных элементов по условиям.
В данном уроке вы закрепим материал и научимся работать с динамическими списками, в которых изменяются отдельные элементы.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке вы научитесь всем способам работы со стилями в React приложении. Вы узнаете, как работать с Inline стилями, с обычными CSS файлами, как динамически стилизовать компоненты, изменяя названия классов. Далее вы узнаете о том, как добавлять псевдоселекторы и медиа запросы в Inline стилях, как работать с CSS модулями и препроцессорами.
В данном уроке мы повторим методы работы с Inline стилями.
В данном уроке вы узнаете, как записывать стили в отдельных файлах и использовать в React компонентах.
В данном уроке вы узнаете, как манипулировать CSS классами в динамическом режиме для визуального отображения изменений в компоненте.
В данном уроке вы узнаете о сторонней библиотеке, которая позволит расширить функционал React и добавлять медиа запросы, или псевдоселекторы, в Inline стилях.
В данном уроке вы узнаете о том, как настроить приложение, чтобы оно поддерживало CSS-модули — локализированный CSS.
В этом уроке вы узнаете, как настроить приложение, чтобы оно поддерживало препроцессоры.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке мы детально познакомимся с теорией по React компонентам. Вы узнаете обо всех возможностях, которые предлагает API React, и на простых примерах научитесь их использовать.
В этом уроке вы узнаете о том, как передавать и принимать параметры в обычный React компонент.
В данном уроке вы узнаете все способы инициализации State в React.
В данном уроке вы узнаете о таком понятии, как жизненный цикл, зачем он нужен, как его использовать.
В данном уроке вы узнаете, как превратить функциональный компонент в обычный React компонент с расширенными возможностями.
В данном уроке вы познакомитесь с новыми жизненными циклами компонента, которые отвечают за изменения компонента.
В этом уроке вы узнаете об еще одном жизненном цикле, который вызывается, когда удаляется компонент.
В этом уроке вы узнаете еще о двух полезных жизненных циклах, оптимизирующих работу React компонента, которые появились в новой версии библиотеки.
В этом уроке вы узнаете о нововведении в последние версии React, которое позволяет создать компонент, чтобы ловить ошибки, если они есть, и защищать использование вашего приложения.
В этом уроке вы узнаете, как обойти одно ограничение в JSX, используя новые возможности в React, которые называются фрагменты.
В этом уроке мы рассмотрим различные способы использования фрагментов, и как они устроены.
В этом уроке вы узнаете, как обезопасить свое приложение от асинхронного изменения State, и как его правильно менять, на основе предыдущего состояния.
В этом уроке вы узнаете, что такое компоненты высшего порядка, зачем они нужны, и что делают.
В данном уроке вы узнаете о возможности валидации входящих параметров с proptypes.
В этом уроке вы узнаете о двух способах получения локальной референции (доступ к нативным DOM элементам) в React.
В данном уроке вы узнаете, что такое контекст в React, и как данная функция позволяет упростить связь между компонентами.
ЦЕЛИ И ЗАДАЧИ БЛОКА
Данный блок является практическим, где мы применим всю пройденную теорию на примере создания приложения для прохождения тестов. Данный блок покроет только создание компонентов и взаимодействие между ними. В результате данного блока мы получим приложение, где можно будет проходить тест и получать результаты по каждому вопросу.
В данном уроке мы сгенерируем проект и произведем его начальную настройку.
В этом уроке мы создадим компонент Layout, который будет содержать в себе разметку приложения.
В данном уроке мы подключим CSS-модули.
В данном уроке мы создадим новый компонент, отвечающий за главную страницу.
В данном уроке мы создадим функциональный компонент, который будет отображать активный вопрос в тесте.
В данном уроке мы создадим новый компонент, который будет отображать список вариантов ответов для вопроса.
В данном уроке мы обработаем выбор пользователем варианта ответа.
В данном уроке мы заложим функционал, который позволит переключать отображение на следующий вопрос.
В данном уроке мы будет отображать, правильно или неправильно пользователь ответил на вопрос.
В этом уроке мы напишем логику по проверке правильности выбора ответа пользователем.
В данном уроке мы сделаем компонент, который будет отображать результаты теста.
В данном уроке мы напишем логику для вычисления результатов теста.
В данном уроке мы создадим общий компонент для кнопки.
В данном уроке мы создадим компонент, который позволит переключать отображение меню.
В данном уроке мы создадим компонент меню, где будет навигация приложения.
В данном уроке мы создадим компонент затемнения.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке вы познакомитесь с библиотекой, которая позволит превратить React приложение в Single Page Application. Вы узнаете всю необходимую теорию для создания приложения со множеством страниц, которые отображаются без перезагрузки страницы.
В данном уроке мы настроим и установим React Router в проект и поговорим о том, какие пакеты отвечают за данный функционал.
В данном уроке вы узнаете, как регистрировать новые роуты в приложении, и какие у него есть параметры.
В данном уроке вы узнаете, как связать роуты и компоненты.
В данном уроке вы узнаете, как правильно переключаться между страницами, используя React router.
В данном уроке вы узнаете, какие параметры и опции есть у компонента ссылки, и как ее можно кастомизировать.
В данном уроке вы узнаете, как можно делать программную навигацию в приложении.
В данном уроке вы узнаете, как добавить функционал роутера для функциональных компонентов.
В данном уроке вы узнаете, как создавать динамические роуты с изменяемой непостоянной частью.
В данном уроке вы узнаете, как делать редирект и обрабатывать несуществующий роут.
В данном уроке вы узнаете, как реализовать концепт guard в Реакт приложении.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном практическом блоке мы применим знания по роутингу на наше приложение. В рамках данного блока мы создадим все страницы, необходимые для работы приложения.
В данном уроке мы установим и настроим роутер для нашего приложения.
В данном уроке мы создадим все компоненты, которые впоследствии будут страницами нашего приложения.
В данном уроке мы реализуем рабочую навигацию для приложения.
В данном уроке мы реализуем страницу, где будет выводиться список всех тестов.
В данном уроке мы разберем, как можно из любого элемента сделать ссылку.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном практическом блоке вы узнаете, как в React обрабатывать и валидировать формы в динамическом режиме. Вы узнаете, как правильно составлять и обновлять State, как выводить сообщения об ошибках и добавлять новые правила для валидации.
В данном уроке мы реализуем страницу авторизации, которая позволит входить в систему и регистрироваться в ней.
В данном уроке мы создадим общий компонент, который будет отвечать за текстовое поле, с возможностью валидации.
В данном уроке мы разберем, как реализовать валидацию в React приложении.
В данном уроке мы продолжим разбираться, как реализовать валидацию в React приложении.
В данном уроке вы узнаете, как валидировать состояние всей формы.
В данном уроке мы реализуем компонент, который будет создавать тесты в приложении.
В данном уроке мы создадим все необходимые контролы, которые будут предоставлять форму для создания тестов.
В данном уроке мы реализуем общий компонент, который будет отображать компонент выбора вариантов.
В данном уроке вы узнаете, как правильно изменять и валидировать поля в форме создания тестов.
В данном уроке мы создадим возможность добавления нового вопроса в тест.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке вы узнаете, как правильно работать с асинхронными запросами в React приложении для получения данных с сервера, создания новых данных.
Урок №1. Настройка проекта
В данном уроке мы подключим библиотеку Axios для работы с асинхронными Ajax запросами и подключим Firebase.
Урок №2. Создание теста
В данном уроке мы обработаем форму и отправим данные на сервер, чтобы сохранять тест.
В данном уроке мы загрузим список всех тестов с базы данных.
В данном уроке мы создадим общий компонент, который будет показывать прогресс загрузки данных с сервера.
В данном уроке вы узнаете, как загружать определенный тест по его специальному ID.
В данном уроке мы подготовим блок авторизации для работы с сервером.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном блоке вы узнаете, что такое Redux, зачем он нужен, и как с ним работать. Вы узнаете обо всех основных составляющих данной технологии, а также, как Redux взаимодействует с React, и как правильно применить Redux в React приложениях.
Урок №1. Введение
В данном уроке мы поговорим о том, что такое Redux, и зачем он нужен.
В данном уроке вы увидите на простом примере, как работает Redux.
В данном уроке вы узнаете, как связываются React и Redux.
В данном уроке вы узнаете, как подписать компонент на изменение Store.
В данном уроке вы узнаете, как правильно изменять State.
В данном уроке вы узнаете, как передавать параметры в Actions и обрабатывать их.
В данном уроке вы узнаете, как сделать один редюсер из нескольких, и как их объединить.
В данном уроке вы узнаете, что такое Middleware, и на простом примере мы разберем, как оно работает, создав свой Middleware.
В данном уроке вы узнаете, что такое Action Creator, и чем он отличается от Action.
В данном уроке вы узнаете, как работать с асинхронным изменением State.
В данном уроке вы узнаете, как подключить Devtools к приложению, которое использует Redux.
ЦЕЛИ И ЗАДАЧИ БЛОКА
В данном практическом блоке мы перепишем приложение на Redux. После этого в рамках данного блока мы добавим возможность авторизации пользователя в системе, защиты роутов и поддержания сессии с автоматическим логином.
В данном уроке мы подключим и настроим Redux к приложению.
В данном уроке мы перепишем страницу, отображающую список тестов на Redux.
В данном уроке мы начнем переписывать страницу прохождения теста.
В данном уроке мы закончим переписывать страницу прохождения теста.
В этом уроке мы перепишем страницу создания тестов на Redux.
В этом уроке мы создадим функционал страницы авторизации и обработаем «сессию» пользователя.
В этом уроке мы будем менять контент меню в зависимости от того, авторизован ли пользователь в системе.
В этом уроке мы реализуем возможность автоматической авторизации пользователя, если время жизни токена еще не истекло.
В этом уроке мы соберем проект и зальем его на хостинг сервиса Firebase.