stringtranslate.com

Реагировать (программное обеспечение)

React (также известный как React.js или ReactJS ) — это бесплатная интерфейсная библиотека JavaScript с открытым исходным кодом [3] [4] для создания пользовательских интерфейсов на основе компонентов . Он поддерживается Meta (ранее Facebook) и сообществом отдельных разработчиков и компаний. [5] [6] [7]

React можно использовать для разработки одностраничных , мобильных или серверных приложений с помощью таких фреймворков, как Next.js. Поскольку React занимается только пользовательским интерфейсом и рендерингом компонентов в DOM , приложения React часто полагаются на библиотеки для маршрутизации и других функций на стороне клиента. [8] [9] Ключевым преимуществом React является то, что он перерисовывает только те части страницы, которые изменились, избегая ненужного повторного рендеринга неизмененных элементов DOM.

Основное использование

Ниже приведен элементарный пример использования React для Интернета, написанный на JSX и JavaScript.

импортировать React из 'реагировать' ; импортировать ReactDOM из 'react-dom/client' ;      /** Чистый компонент, отображающий сообщение */ const Greeting = () => { return ( < div className = "hello-world" > < h1 > Hello , world ! </h1> </div> ) ; };             /** Основной компонент приложения */ const App = () => { return < Greeting /> ; };        /** React отображается в корневом элементе HTML-страницы */ const root = ReactDOM . createRoot ( document.getElementById ( ' root ' )); корень . рендеринг ( < App /> );    

на основе HTML- документа ниже.

<!DOCTYPE html> < html  lang = "en" > < head >  < Meta  charset = "utf-8"  />  < title > React App </ title > </ head > < body >  < noscript > Вам необходимо включить JavaScript для запуска этого приложения. </ noscript >  < div  id = "root" >/ div > </ body > </ html >

Функция Greetingпредставляет собой компонент React, который отображает «Hello, world» .

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

<!DOCTYPE html> < html  lang = "en" > < head >  < Meta  charset = "utf-8"  />  < title > React App </ title > </ head > < body >  < noscript > Вам необходимо включить JavaScript для запуска этого приложения. </ noscript >  < div  id = "root" >  < div  class = "hello-world" >  < h1 > Привет, мир! </ h1 >  </ div >  </ div > </ body > </ html >

Примечательные особенности

Декларативный

React придерживается парадигмы декларативного программирования . [10] : 76  разработчиков создают представления для каждого состояния приложения, а React обновляет и отображает компоненты при изменении данных. Это контрастирует с императивным программированием . [11]

Компоненты

Код React состоит из сущностей, называемых компонентами . [10] : 10–12  Эти компоненты являются модульными и могут использоваться повторно. [10] : 70  Приложения React обычно состоят из множества слоев компонентов. Компоненты визуализируются в корневом элементе DOM с помощью библиотеки React DOM. При рендеринге компонента значения передаются между компонентами через реквизиты (сокращение от «свойства») . Внутренние значения компонента называются его состоянием. [12]

Два основных способа объявления компонентов в React — через функциональные компоненты и компоненты классов. [10] : 118  [13] : 10 

импортировать React из "реагировать" ;   /** Чистый компонент, отображающий сообщение с текущим счетчиком */ const CountDisplay = props => { // Значение счетчика передается этому компоненту как props const { count } = props ; return ( <div> Текущий счетчик : { count } . </div> ) ; _ }                  /** Компонент, который отображает сообщение, которое обновляется при каждом нажатии кнопки */ const Counter = () => { // Здесь используется хук React useState для хранения и обновления // общего количества нажатий кнопки. был нажат. const [ count , setCount ] = Реагировать . использоватьСостояние ( 0 ); return ( < div className = "counter" > < CountDisplay count = { count } /> < button onClick = {() => setCount ( count + 1 ) } > Добавить один ! </button> </div> ); };                             

Функциональные компоненты

Компоненты функции объявляются с помощью функции (с использованием синтаксиса функции JavaScript или выражения функции стрелки ), которая принимает один аргумент «props» и возвращает JSX. Начиная с React v16.8, функциональные компоненты могут использовать состояние с помощью useStateхука.

// Синтаксис функции function Greeter () { return < div > Hello World </div> ; }     // Выражение стрелочной функции const Greeter = () => < div > Hello World </div> ;      

Реагирующие хуки

16 февраля 2019 года была выпущена общедоступная версия React 16.8, в которой представлены React Hooks. [14] Хуки — это функции, которые позволяют разработчикам «подключаться» к состоянию и функциям жизненного цикла React из функциональных компонентов. [15] Примечательно, что хуки не работают внутри классов — они позволяют разработчикам использовать больше возможностей React без классов. [16]

React предоставляет несколько встроенных хуков, таких как useState, [17] [13] : 37  useContext , [10] : 11  [18] [13] : 12  useReducer , [10] : 92  [18] [13] : 65–66  useMemo [10] ] : 154  [18] [13] : 162  и useEffect. [19] [13] : 93–95  Остальные описаны в справочнике по API-интерфейсам Hooks. [20] [10] : 62  useState и useEffect, которые наиболее часто используются, предназначены для контроля состояния [10] : 37  и побочных эффектов [10] : 61  соответственно.

Правила крючков

Есть два правила хуков [21] , которые описывают характерные шаблоны кода, на которые полагаются хуки:

  1. «Вызывайте хуки только на верхнем уровне» — не вызывайте хуки из внутренних циклов, условий или вложенных операторов, чтобы хуки вызывались в одном и том же порядке при каждом рендеринге.
  2. «Вызывайте хуки только из функций React» — не вызывайте хуки из простых функций JavaScript, чтобы логика с сохранением состояния оставалась в компоненте.

Хотя эти правила не могут быть соблюдены во время выполнения, инструменты анализа кода, такие как линтеры , можно настроить для обнаружения многих ошибок во время разработки. Правила применяются как к использованию хуков, так и к реализации пользовательских хуков, [22] которые могут вызывать другие хуки.

Компоненты сервера

Серверные компоненты React или «RSC» [23] — это функциональные компоненты, которые работают исключительно на сервере. Эта концепция была впервые представлена ​​в докладе «Извлечение данных с помощью серверных компонентов». Хотя концепция аналогична рендерингу на стороне сервера, RSC не отправляют соответствующий JavaScript клиенту, поскольку не происходит гидратации. В результате у них нет доступа к крючкам. Однако они могут быть асинхронными функциями , позволяющими напрямую выполнять асинхронные операции:

асинхронная функция MyComponent () {    константное сообщение = ожидание fetchMessageFromDb ();     возвращаться (  < div > Сообщение : { message } </div> _  );}

В настоящее время серверные компоненты легче всего использовать с Next.js.

Компоненты класса

Компоненты класса объявляются с использованием классов ES6 . Они ведут себя так же, как функциональные компоненты, но вместо использования хуков для управления событиями состояния и жизненного цикла они используют методы жизненного цикла базового React.Component класса .

Класс ParentComponent расширяет React . Компонент {     состояние = { цвет : 'зеленый' };      оказывать () {  возвращаться (  < Цвет ChildComponent = { this . состояние . цвет } />   ); }}

Внедрение React Hooks в React 16.8 в феврале 2019 года позволило разработчикам управлять поведением состояний и жизненного цикла внутри функциональных компонентов, снижая зависимость от компонентов классов.

Хуки React, например, useStateдля управления состоянием и useEffectпобочных эффектов, предоставили более оптимизированный и лаконичный способ создания приложений React и управления ими. Этот сдвиг привел к улучшению читаемости и возможности повторного использования кода, побуждая разработчиков переходить от компонентов классов к функциональным компонентам.

Эта тенденция согласуется с более широким движением отрасли в сторону функционального программирования и модульного дизайна. Поскольку React продолжает развиваться, разработчикам важно учитывать преимущества функциональных компонентов и React Hooks при создании новых приложений или рефакторинге существующих. [24]

Маршрутизация

Сам React не имеет встроенной поддержки маршрутизации . React — это прежде всего библиотека для создания пользовательских интерфейсов, и она не включает в себя полноценное решение для маршрутизации «из коробки».

Однако существуют популярные сторонние библиотеки, которые можно использовать для управления маршрутизацией в приложениях React. Одной из таких библиотек является react-router, которая предоставляет комплексное решение маршрутизации для приложений React. [25] Он позволяет вам определять маршруты, управлять навигацией и обрабатывать изменения URL-адресов удобным для React способом.

Чтобы использовать react-router, вам необходимо установить его как отдельный пакет и интегрировать в свое приложение React.

  1. Установите react-router-domс помощью npm или пряжи:
    npm  установить  реакцию-маршрутизатор-дом
  2. Настройте конфигурацию маршрутизации в основном файле приложения:
    импортировать React из 'реагировать' ; импортировать { BrowserRouter as Router , Route , Switch } из 'react-router-dom' ;            импортировать дом из './comComponents/Home' ; импортировать About из './comments/About' ; импортировать контакт из './comComponents/Contact' ;         function App () { return ( < Router > < Switch > < Точный путь маршрута = "/" компонент = { Home } /> < Путь маршрута = "/about" компонент = { About } /> < Путь маршрута = "/contact " компонент = { Контакт } / > </Switch> </Router> ) ; }                      экспортировать приложение по умолчанию ;  
  3. Создайте компоненты для каждого маршрута (например, «Домой», «О программе», «Контакты»).

При такой настройке, когда пользователь переходит по разным URL-адресам, соответствующие компоненты будут отображаться на основе определенных маршрутов.

Существует виртуальный DOM, который используется для реализации реального DOM.

Виртуальный DOM

Еще одной примечательной особенностью является использование виртуальной объектной модели документа или Virtual DOM . React создает кэш структуры данных в памяти , вычисляет полученные различия, а затем эффективно обновляет отображаемый в браузере DOM. [26] Этот процесс называется примирением . Это позволяет программисту писать код так, как если бы при каждом изменении отображалась вся страница, в то время как React отображает только те компоненты, которые действительно изменяются. Этот выборочный рендеринг обеспечивает значительный прирост производительности. [27]

Обновления

Когда ReactDOM.render[28] вызывается снова для того же компонента и цели, React представляет новое состояние пользовательского интерфейса в виртуальном DOM и определяет, какие части (если таковые имеются) живого DOM необходимо изменить. [29]

Обновления RealDOM регулируются VirtualDOM.
VirtualDOM без труда обновит реальныйDOM в режиме реального времени.

Методы жизненного цикла

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

JSX

JSX или расширение синтаксиса JavaScript — это расширение синтаксиса языка JavaScript. [30] Похожий по внешнему виду на HTML, [10] : 11  JSX предоставляет способ структурировать рендеринг компонентов с использованием синтаксиса, знакомого [10] : 15  многим разработчикам. Компоненты React обычно пишутся с использованием JSX, хотя это не обязательно (компоненты также могут быть написаны на чистом JavaScript). JSX похож на другой синтаксис расширения, созданный Facebook для PHP, который называется XHP .

Пример JSX-кода:

Класс App расширяет React . Component { render () { return ( < div > < p > Header </ p > < p > Content </ p > < p > Footer </ p > </ div > ); } }               

Архитектура за пределами HTML

Базовая архитектура React не ограничивается рендерингом HTML в браузере. Например, Facebook имеет динамические диаграммы, которые отображаются в <canvas>тегах, [31] а Netflix и PayPal используют универсальную загрузку для отображения идентичного HTML как на сервере, так и на клиенте. [32] [33]

Серверный рендеринг

Рендеринг на стороне сервера (SSR) — это процесс рендеринга клиентского приложения JavaScript на сервере, а не в браузере. Это может повысить производительность приложения, особенно для пользователей с медленными соединениями или устройствами.

При использовании SSR исходный HTML-код, отправляемый клиенту, включает полностью визуализированный пользовательский интерфейс приложения. Это позволяет браузеру клиента немедленно отображать пользовательский интерфейс, вместо того, чтобы ждать загрузки и выполнения JavaScript перед отрисовкой пользовательского интерфейса.

React поддерживает SSR, что позволяет разработчикам отображать компоненты React на сервере и отправлять полученный HTML-код клиенту. Это может быть полезно для улучшения производительности приложения, а также в целях поисковой оптимизации .

const express = require ( 'express' );   const React = требуется ( 'реагировать' );   const { renderToString } = require ( 'реагировать-дом/сервер' );     константное приложение = экспресс ();   приложение . получить ( '/' , ( req , res ) => {     const html = renderToString ( < MyApp /> );     рез . отправить ( ` <!тип документа html> <html> <тело> <div id="root"> ${ html } </div> <script src="/bundle.js"></script> </тело> </html> ` );});приложение . слушай ( 3000 , () => {    консоль . log ( 'Сервер прослушивает порт 3000' );});

Распространенные идиомы

React не пытается предоставить полную библиотеку приложений. Он разработан специально для создания пользовательских интерфейсов [3] и поэтому не включает в себя многие инструменты, которые некоторые разработчики могут счесть необходимыми для создания приложения. Это позволяет выбирать, какие библиотеки предпочитает разработчик для выполнения таких задач, как доступ к сети или локальное хранилище данных. Общие модели использования возникли по мере развития библиотеки.

Однонаправленный поток данных

Для поддержки концепции однонаправленного потока данных React (которая может контрастировать с двунаправленным потоком AngularJS ) была разработана архитектура Flux как альтернатива популярной архитектуре модель-представление-контроллер . Flux содержит действия , которые отправляются через центральный диспетчер в хранилище , а изменения в хранилище распространяются обратно в представление. [34] При использовании с React это распространение осуществляется через свойства компонента. С момента своего создания Flux был заменен такими библиотеками, как Redux и MobX. [35]

Поток можно рассматривать как вариант модели наблюдателя . [36]

Компонент React в архитектуре Flux не должен напрямую изменять какие-либо реквизиты, переданные ему, но ему должны передаваться функции обратного вызова , которые создают действия , которые отправляются диспетчером для изменения хранилища. Действие — это объект, ответственность которого заключается в описании того, что произошло: например, действие, описывающее, что один пользователь «следует» за другим, может содержать идентификатор пользователя, целевой идентификатор пользователя и тип USER_FOLLOWED_ANOTHER_USER. [37] Магазины, которые можно рассматривать как модели, могут изменяться в ответ на действия, полученные от диспетчера.

Эту закономерность иногда выражают как «свойства текут вниз, действия текут вверх». С момента его создания было создано множество реализаций Flux, возможно, самой известной из них является Redux , в котором имеется единое хранилище, часто называемое единым источником истины . [38]

В феврале 2019 года useReducerбыл представлен как перехватчик React в версии 16.8. Он предоставляет API, совместимый с Redux, что позволяет разработчикам создавать хранилища, подобные Redux, которые являются локальными для состояний компонентов. [39]

Будущее развитие

Статус проекта можно отслеживать через дискуссионный форум основной команды. [40] Однако основные изменения в React происходят из-за проблем с репозиторием Future of React и запросов на включение . [41] [42] Это позволяет сообществу React оставлять отзывы о новых потенциальных функциях, экспериментальных API и улучшениях синтаксиса JavaScript.

История

React был создан Джорданом Уоком, инженером-программистом из Meta , который первоначально разработал прототип под названием «F-Bolt» [43] , а затем переименовал его в «FaxJS». Эта ранняя версия задокументирована в репозитории Джордана Уока на GitHub. [1] На проект повлияла XHP , библиотека компонентов HTML для PHP .

React был впервые развернут в ленте новостей Facebook в 2011 году , а затем интегрирован в Instagram в 2012 году . В мае 2013 года на JSConf US проект был официально открыт с открытым исходным кодом, что стало важным поворотным моментом в его принятии и развитии. [2]


React Native , который обеспечивает нативную разработку для Android , iOS и UWP с помощью React, был анонсирован на конференции Facebook React Conf в феврале 2015 года и открыт в марте 2015 года.

18 апреля 2017 года Facebook анонсировал React Fiber, новый набор внутренних алгоритмов рендеринга в отличие от старого алгоритма рендеринга React Stack. [44] React Fiber должен был стать основой для любых будущих улучшений и развития функций библиотеки React. [45] [ требуется обновление ] Фактический синтаксис программирования с помощью React не меняется; изменился только способ выполнения синтаксиса. [46] Старая система рендеринга React, Stack, была разработана в то время, когда еще не осознавалась направленность системы на динамические изменения. Стек медленно рисовал сложную анимацию, например, пытаясь выполнить все это за один фрагмент. Fiber разбивает анимацию на сегменты, которые можно распределить по нескольким кадрам. Аналогично, структура страницы может быть разбита на сегменты, которые можно обслуживать и обновлять отдельно. Функции JavaScript и виртуальные объекты DOM называются «волокнами», и каждым из них можно управлять и обновлять отдельно, что обеспечивает более плавный рендеринг на экране. [47]

26 сентября 2017 года React 16.0 был выпущен для широкой публики. [48]

10 августа 2020 года команда React объявила о первом кандидате на выпуск React v17.0, который известен как первый крупный выпуск без серьезных изменений в API React, ориентированном на разработчиков. [49]

29 марта 2022 года был выпущен React 18, в котором появился новый параллельный рендеринг, автоматическое пакетирование и поддержка рендеринга на стороне сервера с помощью Suspense. [50]

Лицензирование

В первом публичном выпуске React в мае 2013 года использовалась лицензия Apache 2.0 . В октябре 2014 года React 0.12.00 заменил ее лицензией BSD из 3 пунктов и добавил отдельный текстовый файл ПАТЕНТЫ, который разрешает использование любых патентов Facebook, связанных с программным обеспечением: [51]

Лицензия, предоставленная по настоящему Соглашению, прекращается автоматически и без предварительного уведомления для любого лица, которое предъявляет какие-либо претензии (в том числе путем подачи иска, утверждения или иного действия), утверждая (а) прямое, косвенное или сопутствующее нарушение или побуждение к нарушению какого-либо патента: (i ) Facebook или любой из ее дочерних компаний или филиалов, независимо от того, связана ли такая претензия с Программным обеспечением, (ii) любой стороной, если такая претензия возникает полностью или частично из любого программного обеспечения, продукта или услуги Facebook или любого из ее дочерние компании или филиалы, независимо от того, связана ли такая претензия с Программным обеспечением, или (iii) со стороны любой стороны, имеющей отношение к Программному обеспечению; или (б) что любое право на любую патентную претензию Facebook является недействительным или не имеющим исковой силы.

Это нетрадиционное положение вызвало некоторые споры и дебаты в сообществе пользователей React, поскольку его можно было истолковать как предоставление Facebook возможности отозвать лицензию во многих сценариях, например, если Facebook подает в суд на лицензиата, побуждая его предпринять «другие действия», опубликовав действие. в блоге или где-нибудь еще. Многие выразили обеспокоенность тем, что Facebook может несправедливо использовать положение о прекращении действия или что интеграция React в продукт может усложнить будущее приобретение стартап-компании. [52]

Основываясь на отзывах сообщества, Facebook в апреле 2015 года обновил условия выдачи патента, сделав их менее двусмысленными и более либеральными: [53]

Лицензия, предоставленная по настоящему Соглашению, будет прекращена автоматически и без предварительного уведомления, если вы (или любая из ваших дочерних компаний, корпоративных филиалов или агентов) инициируете прямо или косвенно или проявляете прямую финансовую заинтересованность в любом патентном утверждении: (i) против Facebook или любого другого лица. своих дочерних компаний или корпоративных филиалов, (ii) против любой стороны, если такая Патентная заявка полностью или частично возникает из любого программного обеспечения, технологии, продукта или услуги Facebook или любой из ее дочерних компаний или корпоративных филиалов, или (iii) против любой стороны относящиеся к Программному обеспечению. [...] «Патентное утверждение» — это любой иск или иное действие, в котором утверждается прямое, косвенное или сопутствующее нарушение или побуждение к нарушению любого патента, включая встречный иск или встречный иск. [54]

Фонд Apache Software Foundation счел это соглашение о лицензировании несовместимым с его политикой лицензирования, поскольку оно «переносит риск для последующих потребителей нашего программного обеспечения, несбалансированный в пользу лицензиара, а не лицензиата, тем самым нарушая нашу правовую политику Apache, заключающуюся в том, чтобы быть универсальным донором». «и «не являются подмножеством тех, которые содержатся в [Apache License 2.0], и их нельзя сублицензировать как [Apache License 2.0]». [55] В августе 2017 года Facebook отвергла опасения Apache Foundation и отказалась пересмотреть свою лицензию. [56] [57] В следующем месяце WordPress решила перевести свои проекты Gutenberg и Calypso с React. [58]

23 сентября 2017 года Facebook объявил, что на следующей неделе он повторно лицензирует Flow, Jest, React и Immutable.js в соответствии со стандартной лицензией MIT ; компания заявила, что React является «основой широкой экосистемы программного обеспечения с открытым исходным кодом для Интернета», и что они не хотят «сдерживать прогресс по нетехническим причинам». [59]

26 сентября 2017 г. был выпущен React 16.0.0 с лицензией MIT. [60] Изменение лицензии MIT также было перенесено в версию 15.x с помощью React 15.6.2. [61]

Смотрите также

Рекомендации

  1. ^ Оккино, Том; Уок, Джордан. «JS-приложения в Facebook». YouTube . Проверено 22 октября 2018 г.
  2. ^ "18.2.0 (14 июня 2022 г.)" . Проверено 23 июня 2022 г.
  3. ^ ab «React — библиотека JavaScript для создания пользовательских интерфейсов». сайт реакцииjs.org . Архивировано из оригинала 8 апреля 2018 года . Проверено 7 апреля 2018 г.
  4. ^ «Глава 1. Что такое React? - Что такое React и почему это важно [Книга]» . www.oreilly.com . Архивировано из оригинала 6 мая 2023 года . Проверено 6 мая 2023 г.
  5. ^ Криль, Пол (15 мая 2014 г.). «React: создание более быстрых и плавных пользовательских интерфейсов для веб-приложений, управляемых данными». Инфомир . Проверено 23 февраля 2021 г.
  6. Хемель, Зеф (3 июня 2013 г.). «Библиотека пользовательских интерфейсов React JavaScript Facebook получает неоднозначные отзывы» . infoq.com . Архивировано из оригинала 26 мая 2022 года . Проверено 11 января 2022 г.
  7. Доусон, Крис (25 июля 2014 г.). «История JavaScript и как она привела к ReactJS». Новый стек . Архивировано из оригинала 6 августа 2020 г. Проверено 19 июля 2020 г.
  8. ^ Здесь 2017.
  9. ^ Панчал 2022.
  10. ^ abcdefghijkl Wieruch 2020.
  11. ^ Шварцмюллер 2018.
  12. ^ «Компоненты и реквизит». Реагируйте . Фейсбук. Архивировано из оригинала 7 апреля 2018 года . Проверено 7 апреля 2018 г.
  13. ^ abcdef Ларсен 2021.
  14. ^ «Введение в крючки». реакция.js . Проверено 20 мая 2019 г.
  15. ^ «Краткий обзор - Реакция» . сайт реакцииjs.org . Проверено 8 августа 2019 г.
  16. ^ «Что, черт возьми, такое React Hooks?». Сошаче . 16 января 2020 г. Проверено 24 января 2020 г.
  17. ^ «Использование хука состояния - React» . сайт реакцииjs.org . Проверено 24 января 2020 г.
  18. ^ abc «Использование перехватчика состояния – React». сайт реакцииjs.org . Проверено 24 января 2020 г.
  19. ^ «Использование крючка эффекта - React» . сайт реакцииjs.org . Проверено 24 января 2020 г.
  20. ^ «Справочник по API хуков – React» . сайт реакцииjs.org . Проверено 24 января 2020 г.
  21. ^ «Правила хуков - React» . сайт реакцииjs.org . Проверено 24 января 2020 г.
  22. ^ «Создание собственных крючков - React» . сайт реакцииjs.org . Проверено 24 января 2020 г.
  23. ^ «React Labs: над чем мы работаем - март 2023 г.» . реакция.dev . Проверено 23 июля 2023 г.
  24. ^ Чурасия, Равнак (08 марта 2023 г.). «Преобразование компонента класса в компонент функции (стрелка) — React». Код на неполный рабочий день . Проверено 15 августа 2023 г.
  25. ^ «Освоение React Router - Полное руководство» . 12 июля 2023 г. Проверено 26 июля 2023 г.
  26. ^ «Ссылки и DOM». Реагирующий блог . Проверено 19 июля 2021 г.
  27. ^ «Реакция: виртуальный DOM» . Кодакадемия . Проверено 14 октября 2021 г.
  28. ^ "ReactDOM - Реагировать" . сайт реакцииjs.org . Проверено 8 января 2023 г.
  29. ^ «Примирение - Реагировать» . сайт реакцииjs.org . Проверено 8 января 2023 г.
  30. ^ «Черновик: спецификация JSX» . JSX . Фейсбук. 08.03.2022 . Проверено 7 апреля 2018 г.
  31. ^ Хант, Пит (5 июня 2013 г.). «Почему мы создали React? – Блог React». сайт реакцииjs.org . Проверено 17 февраля 2022 г.
  32. ^ "Изоморфная реакция PayPal" . Medium.com . 27 апреля 2015 г. Архивировано из оригинала 08 февраля 2019 г. Проверено 8 февраля 2019 г.
  33. ^ "Изоморфная реакция Netflix". netflixtechblog.com . 28 января 2015 г. Проверено 14 февраля 2022 г.
  34. ^ «Подробный обзор» . Флюс . Фейсбук . Проверено 7 апреля 2018 г.
  35. ^ "Выпуск Flux 4.0" . Гитхаб . Проверено 26 февраля 2021 г.
  36. ^ Джонсон, Николас. «Введение в Flux — упражнение по React». Николас Джонсон . Проверено 7 апреля 2018 г.
  37. ^ Абрамов, Дэн. «История React и Flux с Дэном Абрамовым». Три разработчика и «Может быть» . Проверено 7 апреля 2018 г.
  38. ^ «Инструменты управления состоянием - Результаты» . Состояние JavaScript . Проверено 29 октября 2021 г.
  39. ^ React v16.8: Тот, у кого есть крючки
  40. ^ «Записи встречи». Реагировать Обсудить . Проверено 13 декабря 2015 г.
  41. ^ "reactjs/react-future - Будущее React" . Гитхаб . Проверено 13 декабря 2015 г.
  42. ^ «facebook/react — Проблемы с запросом функций» . Гитхаб . Проверено 13 декабря 2015 г.
  43. ^ «React.js: Документальный фильм» . YouTube . Горшок меда.
  44. ^ Лардинуа 2017.
  45. ^ «Реагировать на волоконную архитектуру». Гитхаб . Проверено 19 апреля 2017 г.
  46. ^ «Facebook объявляет о React Fiber, переписывании своей среды React» . ТехКранч . Проверено 19 октября 2018 г.
  47. ^ "GitHub - acdlite/react-fiber-architecture: описание нового основного алгоритма React, React Fiber" . github.com . Проверено 19 октября 2018 г.
  48. ^ «Реагировать v16.0». реакция.js. 26 сентября 2017 г. Проверено 20 мая 2019 г.
  49. ^ url=https://reactjs.org/blog/2020/08/10/react-v17-rc.html
  50. ^ ab «React v18.0». сайт реакцииjs.org . Проверено 12 апреля 2022 г.
  51. ^ "Реагировать на CHANGELOG.md" . Гитхаб .
  52. ^ Лю, Остин. «Веская причина не использовать ReactJS». Середина .
  53. ^ «Обновление нашего патентного гранта с открытым исходным кодом» .
  54. ^ «Дополнительное предоставление патентных прав, версия 2» . Гитхаб .
  55. ^ «Ранее задаваемые юридические вопросы ASF» . Фонд программного обеспечения Apache . Проверено 16 июля 2017 г.
  56. ^ «Объяснение лицензии React». Фейсбук . Проверено 18 августа 2017 г.
  57. ^ «Рассмотрите возможность повторного лицензирования на AL v2.0, как только что сделал RocksDB» . Гитхаб . Проверено 18 августа 2017 г.
  58. ^ «WordPress откажется от библиотеки React из-за риска, связанного с патентной статьей Facebook» . ТехКранч . Проверено 16 сентября 2017 г.
  59. ^ «Перелицензирование React, Jest, Flow и Immutable.js» . Код Фейсбука . 23 сентября 2017 г.
  60. Кларк, Эндрю (26 сентября 2017 г.). «React v16.0§MIT лицензирован». Реагирующий блог .
  61. Ханзакер, Натан (25 сентября 2017 г.). «Реагировать v15.6.2». Реагирующий блог .

Библиография

Внешние ссылки