React. Реакт. Тестовая задача 011. Что это за пустой тег?





Что это за пустой тег?

Разберёмся, что здесь происходит:

  <script src="/js/react/react.development.js"></script>
  <script src="/js/react/react-dom.development.js"></script>
  <script src="/js/react/babel.min.js"></script>
  ...
  <script type="text/babel">
    const { useState, createElement } = React;
    const { createRoot } = ReactDOM;

createRoot(document.getElementById('root')).render(
  <>
    <div id="myElement">Один элемент</div>
    <div id="myAnotherElement">Другой элемент</div>
  </>
); 

Иногда в JSX используется тег <>...</>. Дело в том, что блок JSX-кода по правилам должен содержать только один элемент верхнего уровня.

В примере используются сразу два элемента, которые находятся на одном уровне: #myElement и #myAnotherElement. Чтобы JSX-код работал правильно, мы оборачиваем эти два элемента во фрагмент.

Фрагменты не обладают дополнительной функциональностью и могут восприниматься как своеобразные обрамляющие скобки в JSX-коде. Вместо них можно использовать обычный <div>, но тогда в DOM создадутся лишние элементы. А это уже напрасная трата ресурсов, которая вызовет дополнительные сложности с вёрсткой. Например, если в коде выше у элемента #root есть свойство display: flex, дочерние элементы встанут в строку.

А если вместо <> использовать <div>, элементы выстроятся в колонку, так как на них будет распространяться позиционирование div, в который они обёрнуты.