React - одна из самых популярных на сегодняшний день интерфейсных «библиотек». Действительно, это творение Facebook сосредоточено на создании пользовательских интерфейсов, а не на других блоках приложения, таких как маршрутизация на стороне клиента, хранение данных и т. Д. Эти задачи оставлены на усмотрение других дополнительных решений экосистемы (например: React-Router для навигации, Redux для управления состоянием приложения и т. д.).

React, первоначально выпущенный в марте 2013 года, с тех пор расширился за пределы Интернета с помощью React Native, инструмента, который позволяет создавать собственные мобильные приложения с помощью React.

Это набирающая популярность библиотека с более чем 96 000 звезд на GitHub. С момента выпуска он набирал в среднем 58 звезд в день. Кроме того, его используют в производстве такие огромные компании, как Instagram, Netflix, WhatsApp, Airbnb и, конечно же, Facebook.

В официальной документации React описывается следующим образом:

  • Декларативный: позволяет безболезненно создавать интерактивные интерфейсы. Создавайте простые представления для каждого состояния в вашем приложении, и React будет эффективно обновлять и отображать только нужные компоненты при изменении ваших данных. Декларативные представления делают ваш код более предсказуемым и легким для отладки.
  • На основе компонентов: создавайте инкапсулированные компоненты, которые управляют своим собственным состоянием, а затем компонуйте их для создания сложных пользовательских интерфейсов. Поскольку логика компонентов написана на JavaScript, а не на шаблонах, вы можете легко передавать расширенные данные через свое приложение и сохранять состояние вне DOM.
  • Учиться один раз, писать где угодно: вы можете разрабатывать новые функции в React, не переписывая существующий код. React также может отображать на сервере с помощью Node и мобильных приложений Power с помощью React Native. *

Примечание. Вам будет полезно установить некоторые инструменты React в свой браузер (если вы используете Google Chrome или Mozilla Firefox). первым инструментом является React-Detector, который выделяет значок расширения каждый раз, когда вы переходите на веб-сайт, использующий React. Второй инструмент - это расширение React Developer Tools, оно описывает каждый элемент React, составляющий страницу.

Возможности React:

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

DOM (объектная модель документа) - это структура HTML-элементов, составляющих веб-страницу. DOM API определяет способ доступа к этим элементам страницы и их изменения. React ускоряет обновление DOM за счет использования различий DOM, который заключается в сравнении текущего отображаемого контента с новыми изменениями пользовательского интерфейса. В этом сила потрясающей производительности рендеринга React. Вместо того, чтобы напрямую манипулировать DOM (что может быть подвержено ошибкам), React хранит две копии Virtual DOM, оригинальную и обновленную версию, которая отражает изменения, введенные из представления. Две версии запускаются через функцию React, которая выделяет различия и выводит поток операций DOM, которые изменяют только те части представления, которые фактически изменились. В результате экономятся время и ресурсы, поскольку изменения в представлении влияют только на те части, которые фактически изменяются.

Давайте возьмем пример, чтобы все это объяснить. Вот "Hello World!" От React :

import React from "react";
import ReactDOM from "react-dom";
const Hello = React.createClass({
render() {
return React.createElement('div', null, "hello")
}
);
ReactDOM.render(React.createElement(Hello), document.getElementById("app"));

Вызов ReactDOM.render выполняет функцию рендеринга и извлекает виртуальное дерево DOM, сравнивает его с деревом DOM, содержащимся в приложении, идентифицирует элемент и добавляет текст «hello world». React.createElement принимает в качестве параметра элемент HTML, объект атрибута и дочерние элементы (все параметры после второго будут дочерними). На данный момент ничего экстраординарного, но давайте добавим немного интерактивности (и забудем об их импорте для простоты).

  • JSX

React использует JSX для создания шаблонов вместо обычного JavaScript. Однако нет необходимости использовать его, ниже приведены некоторые плюсы, которые он дает.

  • Это быстрее, потому что он выполняет оптимизацию при компиляции кода в JavaScript.
  • Он также является типобезопасным, и большинство ошибок может быть обнаружено во время компиляции.
  • Это упрощает и ускоряет написание шаблонов, если вы знакомы с HTML.

Файлы JSX - это современное решение React для разделения кода HTML и JavaScript. JSX обеспечивает реальную гибкость в написании, чтении и понимании. Babel предлагает предустановку для JSX, которая позволяет преобразовывать JSX в классический код JavaScript и исполняемый навигатором.

Без JSX:

class Hello extends React.Component {
render() {
return React.createElement('div',null,
React.createElement('h1',null,'Title'),
React.createElement('p',null,'Description'));
}
}

С JSX:

class Hello extends React.Component {
render() {
return <div>
          <h1>Title</h1>
          <p>Description</p>
        </div>
}
}
  • Компоненты React

Компоненты позволяют разделить пользовательский интерфейс на независимые, повторно используемые части и рассматривать каждую часть отдельно. Компонентам нужны данные для работы. Вы можете комбинировать компоненты и данные двумя разными способами: как свойства или состояние. Свойства и состояние определяют, что визуализирует компонент и как он себя ведет.

1. Реквизит:

Если бы компоненты были базовыми функциями JavaScript, то входными данными функции были бы свойства. По этой аналогии компонент принимает входные данные (то, что мы называем реквизитами), обрабатывает их, а затем отображает некоторый JSX-код.

Примечание. Свойства должны быть неизменяемыми и располагаться сверху вниз, что означает, что они получены от родительского компонента и доступны только для чтения. Таким образом, родительский компонент может передавать любые данные своим дочерним элементам в качестве свойств, но дочерний компонент не может изменять свои свойства. Затем, если вы попытаетесь отредактировать реквизиты, вы получите ошибку TypeError «Невозможно назначить только для чтения».

2. Состояние:

Состояние - это объект, которым владеет компонент, в котором он объявлен. Его область действия ограничена текущим компонентом. Компонент может инициализировать свое состояние и обновлять его при необходимости. Состояние родительского компонента обычно оказывается опорой дочернего компонента. Когда состояние передается за пределы текущей области видимости, мы называем его опорой.

В чем разница между состоянием и реквизитом?

«реквизиты» передаются компоненту (аналогично параметрам функции), тогда как состояние управляется внутри компонента (аналогично переменным, объявленным внутри функции). (из официальной документации)

Теперь, когда мы знаем основы компонентов, давайте рассмотрим основную классификацию компонентов!

В React есть два типа компонентов:

  • Функциональный компонент: функция, принимающая в качестве параметра объект с именем props и отрисовывающая JSX. Это самый простой способ создать компонент React. это компонент дампа без внутренней логики и внутреннего состояния. Он получает функции и данные из компонента контейнера и отображает их. Вот почему его также называют компонентом презентации.
function ItemCard(props) {
return <h1>the item price :{props.price}</h1>;
}

Эта функция является допустимым компонентом React, поскольку она принимает один аргумент объекта «props» (что означает свойства) с данными и возвращает элемент React. Мы называем такие компоненты «функциональными», потому что они буквально являются функциями JavaScript.

  • Компонент класса: компонент класса предлагает больше возможностей. Он должен иметь метод рендеринга, возвращающий JSX, получающий реквизиты и имеющий состояние, представляющее внутреннее состояние компонента, его можно обновить, вызвав функцию setState ().

примечание: есть два способа создать компонент класса. Традиционный и старый способ - использовать React.createClass (). Когда React был впервые создан, это был единственный способ объявить компонент класса.

Давайте посмотрим на пример:

var ItemsListContainer = React.createClass({
render() {
return <div>
         <h1>Hello World!</h1>
         <p>This is a React Component.</p>
       </div>
}
})

Переменная MyComponent теперь содержит компонент React, который можно использовать где угодно на веб-сайте. Чтобы связать этот сценарий с HTML-страницей, сначала у вас должен быть элемент div с уникальным идентификатором на странице.

<div id=”Items-List”></div>

Затем в скрипте после объявления переменной компонента React используйте функцию ReactDOM.render (), которая принимает 2 аргумента. Первый - это компонент React, а второй - целевой HTML-элемент.

ReactDOM.render(<MyComponent />, document.getElementById('Items-List'))

- Второй способ создать компонент класса React - написать класс, расширяющий React.Component (ES6 syntax).

class ItemsList extends React.Component {
  render() {
    return (
      <div>
        <h1>Hello World!</h1>
        <p>This is a React Component.</p>
      </div>
    );
  }
}

После того, как вы создали компонент, вы можете использовать его где угодно, снова используя ReactDOM.render () таким же образом, чтобы настроить таргетинг на HTML-элемент по идентификатору или импортировать его и использовать следующим образом (ES6):

import ItemList from '../ItemList/ItemList'
function Welcome {
  return (
    <ItemsList/>
  );
}

Установка :

Есть много способов запустить React Project (клонировать стартовый проект, использовать create-react-app и т. Д.). Однако create-react-app по-прежнему остается лучшим способом создать новое одностраничное приложение React с нуля. Он настраивает вашу среду разработки так, чтобы вы могли использовать новейшие функции JavaScript, предоставляя удобные возможности разработчика и оптимизируя ваше приложение для производства. На вашем компьютере должен быть Node ›= 6.

Создание приложения React - отличный способ начать работу с приложением Webpack-React, используя стандартные соглашения. Итак, мы можем установить его глобально из командной строки, используя флаг «-g». Вы можете запустить эту команду в любом месте вашей системы:

npm install -g create-react-app

Следовательно, вы можете создать новое приложение с помощью этой команды:

create-react-app my-app

Внутри каталога вашего проекта вы можете выполнить несколько команд (вы также можете использовать пряжу):

  • npm start: запускает сервер разработки и автоматически перезагружает страницу каждый раз, когда вы вносите изменения.
  • npm run build: объединяет приложение в статические файлы для производства.
  • npm teststarts: средство запуска тестов, позволяющее тестировать приложение с помощью Jest во время его сборки.
  • npm run eject: выводит ваше приложение из настройки create-response-app, что позволяет настроить конфигурацию проекта.

Итак, мы можем запустить сгенерированное приложение:

cd my-app
npm start

Запуск сервера (npm start) автоматически запускает приложение в браузере на localhost: 3000. Кроме того, в выводе консоли отображается адрес LAN, так что вы можете получить доступ к приложению с мобильного устройства в той же сети.

Приложение должно выглядеть так:

  • Ресурсы:

https://reactjs.org/

https://github.com/facebook/react

https://www.apprendre-react.fr/



https://jelvix.com/blog/is-react-js-fast