Фрагменты¶
Возврат нескольких элементов из компонента является распространённой практикой в React. Фрагменты позволяют формировать список дочерних элементов, не создавая лишних узлов в DOM.
1 2 3 4 5 6 7 8 9 |
|
Также существует сокращённая запись, однако не все популярные инструменты поддерживают её.
Мотивация¶
Возврат списка дочерних элементов из компонента – распространённая практика. Рассмотрим пример на React:
1 2 3 4 5 6 7 8 9 10 11 |
|
<Columns />
должен вернуть несколько элементов <td>
, чтобы HTML получился валидным. Если использовать div как родительский элемент внутри метода render()
компонента <Columns />
, то HTML окажется невалидным.
1 2 3 4 5 6 7 8 9 10 |
|
Результатом вывода <Table />
будет:
1 2 3 4 5 6 7 8 |
|
Фрагменты решают эту проблему.
Использование¶
1 2 3 4 5 6 7 8 9 10 |
|
Результатом будет правильный вывод <Table />
:
1 2 3 4 5 6 |
|
Сокращённая запись¶
Существует сокращённая запись объявления фрагментов. Она выглядит как пустые теги:
1 2 3 4 5 6 7 8 9 10 |
|
Можно использовать <>
так же, как используется любой другой элемент. Однако такая запись не поддерживает ключи или атрибуты.
Обратите внимание, что большинство инструментов ещё не поддерживают сокращённую запись, поэтому можно явно указывать <React.Fragment>
, пока не появится поддержка.
Фрагменты с ключами¶
Фрагменты, объявленные с помощью <React.Fragment>
, могут иметь ключи. Например, их можно использовать при создании списка определений, преобразовав коллекцию в массив фрагментов.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
key
– это единственный атрибут, допустимый у Fragment
. В будущем мы планируем добавить поддержку дополнительных атрибутов, например, обработчиков событий.
Живой пример¶
Новый синтаксис JSX фрагментов можно попробовать на CodePen.