Синтаксиса JSX в React упрощает работу с кодом, делая ее интуитивно-понятной, т.к. JSX, с одной стороны, очень похож на обычный HTML, с другой - позволяет внедрять переменные и свойства внутри этого синтаксиса.

Под капотом этого синтаксиса лежит метод React.createElement(), в который передается ряд параметров.

В качестве примера рассмотрим код для небольшого списка дел внутри React-фрагмента (<> ... <>). Здесь переменные не используются. Зато такого типа код можно добавлять там, где вы пока не создали переменные и компоненты, которые можете использовать в коде.

Для того, чтобы вставить переменную, нужно использовать фигурные скобки. Ниже показано, что простые вычисления или использование математических или иных методов тоже требует фигурных скобок. Кроме того, на основе тернарного оператора можно указывать класс, который в React записывается, как className согласно JS, а не HTML-синтаксису.

Списки рендеринга

В React часто требуется отображать несколько похожих компонентов из коллекции данных. Такие методы массивов JavaScript, как map(), становятся чрезвычайно полезными для этой цели.

В примере ниже мы формируем список из чисел в виде маркированного списка. Обязательным в этом случае является параметр key, который может быть случайным или вполне определенным числом. Нужен он для того, чтобы проще было манипулировать элементом React при взаимодействии с ним - удалении, перемещении и т.п. Указывая key , вы помогаете React определить, какие элементы изменяются между повторными рендерами.

В том случае, когда нам нужно импортировать и "разобрать" некий массив элементов на части, чтобы вывести его внутри React-приложения, код будет несколько сложнее. Например, у нас есть некий массив данных, который мы будем экспортировать из файла movies.js:

Тогда в App.jsx мы запишем так:

Обратите внимание, что в js-файле у нас есть объект, в котором свойство items уже содержит сам массив данных. Поэтому и метод map() мы будем вызывать для ALL_MOVIES.items.

Условный рендеринг

Условный рендеринг позволяет отображать различные элементы пользовательского интерфейса в зависимости от определённых условий. Вы можете использовать условные конструкции JavaScript в виде операторов if...else, тернарных операторов, а также логическое И ( &&) для создания элементов, представляющих текущее состояние.

Пример с выводом сообщения о температуре:

Довольно часто в React какие-то условия предполагают, что какой-то элемент существует. В этом случае нужно записывать выражение с использованием логического оператора &&:{condition && <div>Content</div>}

Например, в коде для фильмов можно добавить

Кроме того, если, например, некое свойство может отсутствовать в массиве объектов, например тот же рейтинг или изображение, проверять его можно так: const notRated = !movie?.rating; Тут используется оператор опциональной последовательности, который возвращает undefined, если какое-либо свойство отсутствует у нужного объекта.

Например, так можно в коде фильмов проверять наличие изображения и выводить в зависимости от этого либо нужное изображение, либо сообщение об его отсутствии.

 

Метки:

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *