React делает безболезным создание интерактивных пользовательских интерфейсов. Создавайте простые представления для каждого состояния вашего приложения, и React будет эффективно обновлять и отрисовать только нужные компоненты при изменении ваших данных.
Декларативные представления делают ваш код более предсказуемым и легче для отладки.
Создавайте инкапсулированные компоненты, которые управляют своим состоянием, а затем компонуйте их для создания сложных пользовательских интерфейсов.
Поскольку логика компонента написана на JavaScript вместо использования шаблонов, вы можете легко передавать различного типа данных через своё приложение и сохранять состояние вне DOM.
Мы не строим предположений относительно остальной части вашего технологического стека, поэтому вы можете разрабатывать новые возможности в React без перезаписи существующего кода.
React также может работать на сервере с помощью Node и может быть задействован на мобильных приложениях с использованием React Native.
Компоненты React реализуют метод render()
, который принимает входные данные и возвращает данные для отображения. В этом примере используется XML-подобный синтаксис JSX. Входные данные, которые передаются в компонент, могут быть доступны в render()
через this.props
.
JSX необязателен и не его требуется использовать в React. Попробуйте REPL Babel, чтобы увидеть необработанный код JavaScript, созданный на этапе компиляции JSX.
Помимо ввода входных данных (доступных через this.props
), компонент может поддерживать внутренние данные состояния (доступные через this.state
). Когда данные состояния компонента изменяются, отрисованная разметка будет обновляться путём повторного вызова render()
.
Используя props
иstate
, мы можем создать небольшое приложение со списком дел. В этом примере используется state
для отслеживания текущего списка элементов, а также текста, введённого пользователем. Хотя обработчики событий, по всей видимости, встроенные в разметку, они собираются и реализуются с помощью делегирования событий.
React — гибкий и предоставляет хуки, позволяющие вам взаимодействовать с другими библиотеками и фреймворками. В этом примере используется remarkable, внешняя библиотека для работы с Markdown, чтобы преобразовать значение <textarea>
в режиме реального времени.