React. Документация
  • Быстрый старт
    • Установка React
    • Привет, мир
    • Введение в JSX
    • Отрисовка элементов
    • Компоненты и свойства
    • Состояние и жизненный цикл
    • Обработка событий
    • Условный рендеринг
    • Списки и ключи
    • Формы
    • Lifting State Up
    • Композиция против наследования
    • Thinking in React

React. Введение в JSX

JSX - это надстройка на JavaScript, которая позволяет использовать XML-подобный синтаксис в JavaScript. JSX рекомендуется использовать при написании React компонентов, поскольку с помощью него проще представить DOM-модель, в коде, написанном на JSX, легко разобраться.
React. Введение в JSX

Взгляните на это объявление переменной:

const element = <h1>Привет, мир!</h1>;

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

JSX производит "элементы" React. Мы будем изучать их рендеринг в DOM в разделе Отрисовка элементов. Ниже вы можете найти основы JSX, необходимые для начала работы.

Встраивание выражений в JSX

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

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Морис',
  lastName: 'Терез'
};

const element = (
  <h1>
Привет, {formatName(user)}!
</h1> ); ReactDOM.render( element, document.getElementById('root') );

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

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

После компиляции JSX-выражения становятся обычными JavaScript-объектами. Это означает, что вы можете использовать JSX-выражение внутри операторов if и циклов for, присвоить его переменной, принять в качестве аргумента и вернуть его из функции:

function getGreeting(user) {
  if (user) {
return <h1>Привет, {formatName(user)}!</h1>;
}
return <h1>Привет, Незнакомец.</h1>;
}

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

Вы можете использовать кавычки, чтобы указать шаблонные строки в качестве атрибутов:

const element = <div tabIndex="0"></div>;

Вы можете также использовать фигурные скобки, чтобы вставить JavaScript-выражение в атрибут:

const element = <img src={user.avatarUrl}></img>;

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

Если тег пуст, вы можете закрыть его как XML (/>):

const element = <img src={user.avatarUrl} />;

Внутри JSX-тегов могут содержаться другие теги:

const element = (
  <div>
    <h1>Привет!</h1>
    <h2>Рад вас видеть.</h2>
  </div>
);

Так как JSX ближе к JavaScript, чем HTML, React DOM использует наименования в стиле camelCase (пробелы отсутствуют, первая буква каждого слова (начиная со второго) заглавная) вместо HTML-атрибутов.

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

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

Встраивание пользовательского ввода в JSX безопасно:

const title = response.potentiallyMaliciousInput;
// Это безопасно:
const element = <h1>{title}</h1>;

По умолчанию, React DOM избегает любые значения, вставленные в JSX до того, как рендерить их. Таким образом, у вас появляется уверенность в том, что в свое приложение вы никогда не впишете и не вставите ничего по случайности. Перед рендером все конвертируется в строки. Это помогает предотвратить XSS (cross-site-scripting) атаки.

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

Babel компилирует JSX для вызова в React.createElement(). Следующие два примера идентичны:

const element = (
  <h1 className="greeting">
    Привет, мир!
  </h1>
);
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Привет, мир!'
);

React.createElement() выполняет несколько проверок, чтобы помочь вам писать код без ошибок, но, по существу, он создает примерно такой объект:

// Примечание: эта конструкция упрощается
const element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Привет, мир'
  }
};

Эти объекты называются "React-элементы". Вы можете думать о них как о описании того, что вы хотите видеть на экране. React читает эти объекты и использует их, чтобы построить DOM и поддерживать его в актуальном состоянии.

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

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

Популярные статьи
2D игра на Unity. Подробное руководство. Часть 1
  • unity
2D игра на Unity. Подробное руководство. Часть 1
Адаптивный слайдер без Javascript на CSS3
  • слайдер
Адаптивный слайдер без Javascript на CSS3
Работа с Unity в 2D
  • unity
Работа с Unity в 2D
2D игра на Unity. Подробное руководство. Часть 3
  • unity
2D игра на Unity. Подробное руководство. Часть 3
2D игра на Unity. Подробное руководство. Часть 4
  • unity
2D игра на Unity. Подробное руководство. Часть 4
2D игра на Unity. Подробное руководство. Часть 5
  • unity
2D игра на Unity. Подробное руководство. Часть 5
2D игра на Unity. Подробное руководство. Часть 6
  • unity
2D игра на Unity. Подробное руководство. Часть 6
Учебник по новому GUI в Unity. Часть 2.
  • unity
Учебник по новому GUI в Unity. Часть 2.
Учебник по новому GUI в Unity. Часть 1.
  • unity
Учебник по новому GUI в Unity. Часть 1.

HTML LESS LESS React
Онлайн журнал для профессиональных веб-дизайнеров и программистов
БлогПлагиныГрафикаИнструменты
© 2009-2017 WebSketches.ru