НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
React. W3Schools українською. Уроки для початківців

En

React JSX


Що таке JSX?

JSX розшифровується як JavaScript XML.

JSX дозволяє нам писати HTML у React.

JSX полегшує написання та додавання HTML у React.


Кодування JSX

JSX дозволяє нам писати елементи HTML у JavaScript і розміщувати їх у DOM без жодного методу createElement() та/або appendChild().

JSX перетворює теги HTML на елементи React.

Ви не зобов’язані використовувати JSX, але JSX полегшує написання програм React.

Ось два приклади. Перший використовує JSX, а другий – ні:

Приклад 1

Із JSX:

const myElement = <h1>I Love JSX!</h1>;

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(myElement);

Виконати приклад »

Приклад 2

Без JSX:

const myElement = React.createElement('h1', {}, 'Я не використовую JSX!');

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(myElement);

Виконати приклад »

Як ви бачите в першому прикладі, JSX дозволяє нам писати HTML безпосередньо в коді JavaScript.

JSX є розширенням мови JavaScript на основі ES6 і перекладається на звичайний JavaScript під час виконання.


Вирази в JSX

За допомогою JSX ви можете писати вирази у фігурних дужках { }.

Вираз може бути змінною React, властивістю або будь-яким іншим дійсним виразом JavaScript. JSX виконає вираз і поверне результат:

Приклад

Виконати вираз 5 + 5:

const myElement = <h1>React у {5 + 5}  разів краще із 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>Я параграф.</p>
<p>Я також параграф.</p>
</div>
);

Виконати приклад »

JSX видасть помилку, якщо HTML неправильний або якщо в HTML відсутній батьківський елемент.

Крім того, ви можете використати "фрагмент", щоб обернути кілька рядків. Це дозволить уникнути непотрібного додавання додаткових вузлів до DOM.

Фрагмент виглядає як порожній тег HTML: <></>.

Приклад

Перенесіть два параграфи всередину фрагмента:

const myElement = (
<>
<p>Я параграф.</p>
<p>Я теж параграф.</p>
</>
);

Виконати приклад »


Елементи мають бути закриті

JSX відповідає правилам XML, тому елементи HTML мають бути належним чином закриті.

Приклад

Закрийте порожні елементи за допомогою />

const myElement = <input type="text" />;

Виконати приклад »

JSX видасть помилку, якщо HTML закрито неправильно.


Атрибут class = className

Атрибут 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:

Приклад

Напишіть "Hello" якщо x менше, ніж 10, інакше "Goodbye":

const x = 5;
let text = "Goodbye";
if (x < 10) {
text = "Hello";
}

const myElement = <h1>{text}</h1>;

Виконати приклад »

Варіант 2:

Натомість використовуйте тернарні (потрійні) вирази:

Приклад

Напишіть "Hello" якщо x менше, ніж 10, інакше "Goodbye":

const x = 5;

const myElement = <h1>{(x) < 10 ? "Hello" : "Goodbye"}</h1>;

Виконати приклад »

Зауважте, що для того, щоб вставити вираз JavaScript у JSX, JavaScript має бути укладено у фігурні дужки {}.


Перевірте себе за допомогою вправ

Вправа:

Відобразити <p> без використання JSX.

const paragraph = React.createElement(, {}, 'Це параграф без використання JSX!');

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(paragraph);