Синтаксис JSX
JSX расшифровывается как JavaScript XML. Т.е. смесь JavaScript и HTML, которая используется в React.js в методе return (render) для визуализации. Задача JSX – облегчить построение интерфейсов в React.
Также, JSX позволяет просто создавать элементы и помещать их в DOM без каких либо операций createElement, appendChild.
JSX преобразует HTML-теги в элементы React.
1. Создание и вывод константы
Создадим в App.js константу и выведем ее в return. Для вывода переменной применяется синтаксис {} фигурных скобок ( иногда называется Mustache template)
2. Создание и вывод переменной
Ничем не отличается от вывода константы — аналогично применяем синтаксис “усов”.
Согласитесь — довольно просто и не нужно получать элемент через querySelector, делать innerHTML, textContent etc.
Также мы можем внутри {} писать выражения. Например конкатенация.
Либо математические операции с переменной.
3. Вывод массива
Выводить массив на страницу — операция которая требует приведения типа к строке. Обычно в JavaScript это делается с помощью цикла или reduce. В React все намного проще. Применяется метод массива map:
4. Создание списка (элементов) на основе массива
В синтаксисе JSX упрощено создание элементов. Давайте дополним предыдущий пример и создадим список.
Обратите внимание, в качестве атрибута в теге li добавлен key. Если его убрать то в консоли будет ошибка. Ключи должны быть уникальны в рамках элемента. Т.е. если у вас есть повторяющиеся элементы — например элементы списка, React требует чтобы таким элементам присваивался атрибут key уникальный в рамках элемента. Ключи могут повторяться в разных элемента.
Ключ это строка. Можно применять id элементов, или генерированные случайные строки.
5. Вывести сумму элементов массива
Давайте рассмотрим пример применения метода массива для расчета внутри JSX.
Обратите внимание, так можно применять методы которые возвращают результат. Например, forEach, который просто применяет функцию применить не получится.
6. Присвоить стили inline
Давайте создадим переменную и привоем ей строку — цвет. Попробуем присвоить inline стиль элементу. Присвоение стилей также можно сделать через {}.
Таким образом можно присвоить одно свойство, но если свойств много? Двигаемся дальше.
7. Присвоить объект со стилями
Если у вас CSS свойства для элемента DOM заданы в виде объекта – то примените следующий способ добавления стилей.
Обратите внимание на правила записи стилей. Не font-weight
, а fontWeight
, не text-transform
а textTransform
. Не забывайте писать CSS свойства в корректном стиле.
8. Присвоить класс CSS из переменной
Представим, что имя класса лежит в переменной. Задача, присвоить данный класс в JSX. Реализуем так:
В таком стиле класс text-bold
будет присвоить к элементу p
.
9. Условный рендеринг с помощью класса
Допустим у нас есть два класса (CSS класса). Допустим класс hide
, который содержит свойство display: none
, и класс show
, который содержит свойства display: block
.
Представим, что мы хотим в зависимости от условий — присваивать или тот или иной класс, тем самым скрывая или показывая блок. Реализуем:
Как видно, если переменная d5 меньше 10 то div будет скрыт. Если больше — отображен. Не забывайте прописать CSS свойства для этих классов в CSS.
Если мы коснулись условий, давайте сделаем вывод просто текста в зависимости от условия:
Т.е. мы научились в зависимости от условий создавать внешний вид компонента.
10. Создаем элемент в JSX
В самом начале юнита было сказано, что JSX позволяет быстро создавать элементы. Пробуем:
Давайте попробуем создать более сложный, с точки зрения верстки элемент. Например, список.
11. Выполнение функции в JSX
Выполним функцию внутри JSX кода:
Аналогично можно создать стрелочную функцию и выполнить. Пробуем.
12. Создание таблиц в JSX
Когда вы создаете таблицу в JSX, следует учесть необходимость прописывать теги thead, tbody и т.д.
Итог
JSX позволяет упростить работу с версткой, созданием и выводом элементом на страницу, отходя от привычных по JS выводам типа append, innerHTML...
Last updated