Реагировать JSX
Что такое JSX?
JSX означает JavaScript XML.
JSX позволяет нам писать HTML в React.
JSX упрощает написание и добавление HTML в React.
Кодирование JSX
JSX позволяет нам писать HTML-элементы на JavaScript и размещать их в DOM без каких -либо методов createElement()
и/или
.appendChild()
JSX преобразует теги HTML в элементы реакции.
Вам не обязательно использовать JSX, но JSX упрощает написание приложений React.
Вот два примера. Первый использует JSX, а второй нет:
Пример 1
JSX:
const myelement = <h1>I Love JSX!</h1>;
ReactDOM.render(myelement, document.getElementById('root'));
Пример 2
Без JSX:
const myelement = React.createElement('h1', {}, 'I do not use JSX!');
ReactDOM.render(myelement, document.getElementById('root'));
Как вы можете видеть в первом примере, JSX позволяет нам писать HTML непосредственно в коде JavaScript.
JSX — это расширение языка JavaScript на основе ES6, которое во время выполнения транслируется в обычный JavaScript.
Получите сертификат!
ЗАПИСАТЬСЯ НА 95 $
Выражения в JSX
С помощью JSX вы можете писать выражения внутри фигурных скобок { }
.
Выражение может быть переменной React, свойством или любым другим допустимым выражением JavaScript. JSX выполнит выражение и вернет результат:
Пример
Выполнить выражение 5 + 5
:
const myelement = <h1>React is {5 + 5} times better with JSX</h1>;
Вставка большого блока HTML
Чтобы написать HTML в несколько строк, поместите HTML в круглые скобки:
Пример
Создайте список с тремя элементами списка:
const myelement = (
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Cherries</li>
</ul>
);
Один элемент верхнего уровня
HTML-код должен быть заключен в ОДИН элемент верхнего уровня.
Поэтому, если вы хотите написать два абзаца, вы должны поместить их внутри родительского элемента, как div
элемент.
Пример
Оберните два абзаца внутри одного элемента DIV:
const myelement = (
<div>
<p>I am a paragraph.</p>
<p>I am a paragraph too.</p>
</div>
);
JSX выдаст ошибку, если HTML неверен или если в HTML отсутствует родительский элемент.
В качестве альтернативы вы можете использовать «фрагмент» для переноса нескольких строк. Это предотвратит ненужное добавление дополнительных узлов в DOM.
Фрагмент выглядит как пустой HTML-тег: <></>
.
Пример
Оберните два абзаца внутри фрагмента:
const myelement = (
<>
<p>I am a paragraph.</p>
<p>I am a paragraph too.</p>
</>
);
Элементы должны быть закрыты
JSX следует правилам XML, поэтому элементы HTML должны быть правильно закрыты.
Пример
Закройте пустые элементы с помощью/>
const myelement = <input type="text" />;
JSX выдаст ошибку, если HTML не закрыт должным образом.
Класс атрибута = имя_класса
Этот class
атрибут часто используется в HTML, но поскольку JSX отображается как JavaScript, а
class
ключевое слово является зарезервированным словом в JavaScript, вам не разрешено использовать его в JSX.
className
Вместо этого используйте атрибут .
JSX решил эту проблему, используя className
вместо этого. Когда JSX визуализируется, он переводит className
атрибуты в class
атрибуты.
Пример
Используйте атрибут className
вместо
class
JSX:
const myelement = <h1 className="myclass">Hello World</h1>;
Условия - операторы if
React поддерживает if
операторы, но не внутри JSX.
Чтобы иметь возможность использовать условные операторы в JSX, вы должны поместить if
операторы вне JSX или вместо этого использовать троичное выражение:
Опция 1:
Напишите if
операторы вне кода JSX:
Пример
Напишите «Привет», если x
меньше 10, иначе «До свидания»:
const x = 5;
let text = "Goodbye";
if (x < 10) {
text = "Hello";
}
const myelement = <h1>{text}</h1>;
Вариант 2:
Вместо этого используйте тернарные выражения:
Пример
Напишите «Привет», если x
меньше 10, иначе «До свидания»:
const x = 5;
const myelement = <h1>{(x) < 10 ? "Hello" : "Goodbye"}</h1>;
Обратите внимание , что для встраивания выражения JavaScript в JSX код JavaScript должен быть заключен в фигурные скобки, {}
.