Перейти к содержанию

React

Непроверенная
Материал из Мегавики
React
Автор Джордан Валке (англ. Jordan Walke)
Состояние Актуален

React (иногда React.js или ReactJS) — JavaScript-библиотека[1] с открытым исходным кодом для разработки пользовательских интерфейсов.

React разрабатывается и поддерживается Facebook, Instagram и сообществом отдельных разработчиков и корпораций[2][3][4].

React может использоваться для разработки одностраничных и мобильных приложений. Его цель — предоставить высокую скорость разработки, простоту и масштабируемость. В качестве библиотеки для разработки пользовательских интерфейсов React часто используется с другими библиотеками, такими как MobX, Redux и GraphQL.

История разработки[править]

React был создан Джорданом Валке, разработчиком программного обеспечения из Facebook. На него оказал влияние XHP — компонентный HTML-фреймворк для PHP[5]. Впервые React использовался в новостной ленте Facebook в 2011 году и позже в ленте Instagram в 2012 году[6]. Исходный код React открыт в мае 2013 года на конференции «JSConf US».

React Native анонсирован на конференции Facebook «React.js Conf» в феврале 2015 года, а исходный код открыт в марте 2015 года. Он позволяет разрабатывать нативные Android-, iOS- и UWP-приложения с использованием React.

18 апреля 2017 года Facebook анонсировал React Fiber, переписанную и оптимизированную версию React[7]. React Fiber станет основой разработки всех будущих функций и улучшений[8].

Пример использования[править]

Ниже приведён пример использования React в HTML с JSX и JavaScript.

<div id="myReactApp"></div>

<script type="text/babel">
  class Greeter extends React.Component { 
    render() { 
      return <h1>{this.props.greeting}</h1>
    } 
  } 

  ReactDOM.render(<Greeter greeting="Hello World!" />, document.getElementById('myReactApp'));
</script>

Класс Greeter — это React-компонент, принимающий свойство greeting. Метод ReactDOM.render отрисовывает экземпляр класса (компонента) Greeter со свойством greeting равным "Hello World" и вставляет отрисованный компонент в DOM-элемент с идентификатором myReactApp как вложенный элемент.

При отображении в веб-браузере результат будет:

<div id="myReactApp">
  <h1>Hello World!</h1>
</div>

Особенности[править]

Однонаправленная передача данных[править]

Свойства передаются от родительских компонентов к дочерним. Компоненты получают свойства как множество неизменяемых (англ. immutable) значений, поэтому компонент не может напрямую изменять свойства, но может вызывать изменения через callback-функции. Такой механизм называют «свойства вниз, события наверх».

Виртуальный DOM[править]

React использует виртуальный DOM (англ. virtual DOM). React создаёт кэш-структуру в памяти, что позволяет вычислять разницу между предыдущим и текущим состояниями интерфейса для оптимального обновления DOM браузера. Таким образом программист может работать со страницей, считая, что она обновляется вся, но библиотека самостоятельно решает, какие компоненты страницы необходимо обновить.

Redux[править]

Часто React используют в связке с Redux для управления состояниями компонентов

JSX[править]

JavaScript XML (JSX) — это расширение синтаксиса JavaScript, которое позволяет использовать HTML-подобный синтаксис для описания структуры интерфейса. Как правило, компоненты написаны с использованием JSX, но также есть возможность использования обычного JavaScript[9]. JSX напоминает другой язык, созданный в компании Фейсбук для расширения PHP, XHP .

Методы жизненного цикла[править]

Методы жизненного цикла позволяют разработчику запускать код на разных стадиях жизненного цикла компонента. Например:

  • shouldComponentUpdate — позволяет предотвратить перерисовку компонента с помощью возврата false, если перерисовка не нужна.
  • componentDidMount — вызывается после первой отрисовки компонента. Часто используется для запуска получения данных с удалённого источника через API.
  • render — важнейший метод жизненного цикла. Каждый компонент должен иметь этот метод. Обычно вызывается при изменении данных компонента для перерисовки данных в интерфейсе.

Не только отрисовка HTML в браузере[править]

React используется не только для отрисовки HTML в браузере. Например, Facebook имеет динамические графики, которые отрисовываются в теге <canvas>. Netflix и PayPal используют изоморфные загрузки для отрисовки идентичного HTML на сервере и клиенте.

React Hooks[править]

Хуки позволяют использовать состояние и другие возможности React без написания классов[10].

Построение пользовательских хуков позволяет помещать логику компонента в повторно используемые функции.[11].

Литература[править]

  • Мардан Азат. React быстро. Веб-приложения на React, JSX, Redux и GraphQL. — СПб.: «Питер», 2019. — С. 560. — ISBN 978-5-4461-0952-4.
  • Бэнкс Алекс, Порселло Ева. GraphQL: язык запросов для современных веб-приложений. — СПб.: «Питер», 2019. — С. 240. — ISBN 978-5-4461-1143-5.
  • Бэнкс Алекс, Порселло Ева. React и Redux: функциональная веб-разработка. — СПб.: «Питер», 2018. — С. 336. — ISBN 978-5-4461-0668-4.
  • Томас Марк Тиленс. React в действии. — СПб.: «Питер», 2019. — С. 368. — ISBN 978-5-4461-0999-9.
  • Кирупа Чиннатамби. Изучаем React. — СПб.: «Питер», 2019. — С. 368. — ISBN 978-5-04-098028-4.

Примечания[править]

  1. React - A JavaScript library for building user interfaces.. React. Дата обращения: 7 апреля 2018. Архивировано 19 июля 2018 года.
  2. Krill, Paul React: Making faster, smoother UIs for data-driven Web apps. InfoWorld (May 15, 2014). Дата обращения: 24 мая 2018. Архивировано 12 июня 2018 года.
  3. Hemel, Zef Facebook's React JavaScript User Interfaces Library Receives Mixed Reviews. InfoQ (June 3, 2013). Дата обращения: 24 мая 2018. Архивировано 12 июня 2018 года.
  4. Dawson, Chris JavaScript’s History and How it Led To ReactJS. The New Stack (July 25, 2014). Дата обращения: 24 мая 2018. Архивировано 12 июня 2018 года.
  5. React (JS Library): How was the idea to develop React conceived and how many people worked on developing it and implementing it at Facebook?. Quora.
  6. Pete Hunt at TXJS. Дата обращения: 24 мая 2018. Архивировано 31 июля 2017 года.
  7. Frederic Lardinois. Facebook announces React Fiber, a rewrite of its React framework, TechCrunch (18 April 2017). Архивировано 14 июня 2018 года. Дата обращения 24 мая 2018.
  8. React Fiber Architecture. Github. Дата обращения: 19 апреля 2017. Архивировано 10 мая 2018 года.
  9. React Without JSX - React (англ.). reactjs.org. Дата обращения: 19 июля 2018. Архивировано 19 июля 2018 года.
  10. Краткий обзор хуков – React. ru.reactjs.org. Дата обращения: 5 октября 2019. Архивировано 12 октября 2019 года.
  11. Создание пользовательских хуков – React. ru.reactjs.org. Дата обращения: 5 октября 2019. Архивировано 5 июня 2019 года.
Источник — https://megawiki.ru/wiki/React