React.js на русском языке. Часть вторая

7e02b83c767f495cb4235372bda281a5.png

Перевод официальной документации библиотеки React.js на русском языке.

Оглавление:


1 — Часть первая
2 — Часть втораяВнедрение JSX
Ознакомьтесь с этим объявлением переменных:
const element = 

Hello, world!

;

Этот забавный синтаксис тега не представляет собой ни строку, ни HTML.
Он называется JSX и представляет собой расширение языка в JavaScript. Мы рекомендуем использовать его при работе с React, чтобы описать как должен выглядеть UI. JSX может напоминать вам HTML разметку, но он полноценно работает в JavaScript.
JSX производит «элементы» React. В следующем разделе мы будем изучать их.

Внедрение выражений в JSX


Вы можете вставить любой JavaScript-код в JSX, завернув его в фигурные скобки.
Например,  2 + 2,  user.name, и formatName (user) все эти выражения допустимы:
function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  

Hello, {formatName(user)}!

); ReactDOM.render( element, document.getElementById('root') );

Повторите данный пример в CodePen.

Мы завернули JSX в скобки и разделили его на несколько строк для удобного чтения. Это также помогает избежать ошибочной автоматической вставки точки с запятой.

JSX это тоже выражение


После компиляции JSX выражения становятся постоянными объектами JavaScript. Это значит, что вы можете использовать JSX внутри выражений if и циклов for, назначать их переменными, принимать как аргументы, и возвращать их из функций:
function getGreeting(user) {
  if (user) {
    return 

Hello, {formatName(user)}!

; } return

Hello, Stranger.

; }

Определение атрибутов с JSX


Вы можете использовать кавычки для определения шаблонных строк в качестве атрибутов.
const element = 
;

Вы также можете использовать фигурные скобки для размещения JavaScript выражения в атрибуте:
const element = ;

Определение дочерних модулей с JSX


Если тег пустой, вы можете сразу закрыть его /> как XML:
const element = ;

JSX теги могут содержать дочерние модули:
const element = (
  

Hello!

Good to see you here.

);

Нюанс:
Так как JSX ближе к JavaScript, чем HTML, React DOM использует наименования camelCase, а не имена атрибутов HTML.

Например, class становится className в JSX, а tabindex становится tabIndex.

JSX предотвращает атаки


Размещение пользовательского ввода в JSX безопасно:
const title = response.potentiallyMaliciousInput;
// This is safe:
const element = 

{title}

;

React DOM по умолчанию избегает любых элементов, заложенных в JSX перед их обработкой.

JSX представляет собой объекты


Babel компилирует JSX к React.createElement () сигналам.
Эти два примера идентичны:
const element = (
  

Hello, world!

);
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

React.createElement () выполняет несколько проверок чтобы помочь написать код без каких-либо багов, но, по сути, он создает следующий объект:
// Note: this structure is simplified
const element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Hello, world'
  }
};

Такие объекты называются «Объекты React». Их можно представить как описания того, что вы хотите видеть на экране. React читает эти объекты и использует их чтобы построить DOM и постоянно обновлять его.

Мы будем изучать обработку элементов React в DOM в следующем разделе.

Совет:

Рекомендуем вам найти схему синтаксиса Babel для вашего редактора, чтобы ES6 и JSX код работал правильно.

Комментарии (0)

© Habrahabr.ru