Допустим, у нас есть компонент, который отображает список элементов. Я просто использовал слово «предмет» в качестве ключа для простоты. В реальном мире данные будут получаться с сервера, и в идеале они должны иметь уникальный идентификатор.
Примечание. В фрагменте кода я использую класс библиотеки начальной загрузки. Вы можете использовать свои собственные и соответствующим образом изменять классы.
function ListGroup() { let items = ["Banglore", "Hyderabad", "Delhi", "Mumbai"]; return ( <> <h1>List</h1> <ul className="list-group"> {items.map((item) => ( <li key={item}>{item}</li> ))} </ul> </> ); } export default ListGroup;
давайте напишем код, как добиться условного рендеринга. Когда список пуст, мы хотим отобразить собственное сообщение. Один из способов сделать это — написать условие if и отобразить другую разметку. Обратите внимание: я только что сделал список пустым и добавил для этого условие if.
function ListGroup() { let items = ["Banglore", "Hyderabad", "Delhi", "Mumbai"]; items = []; if (items.length === 0) return ( <> <h1>List</h1> <p>No item found</p>; </> ); return ( <> <h1>List</h1> <ul className="list-group"> {items.map((item) => ( <li key={item}>{item}</li> ))} </ul> </> ); } export default ListGroup;
Несколько вещей, которые нужно знать из приведенных выше фрагментов кода.
‹›‹/>< ⇒ это эквивалентно ‹Fragment /› (вы можете импортировать его из React.) Дополнительную информацию об этом можно найти в документации React или в любом онлайн-блоге.
import { Fragment } from "react";
Также, когда у нас есть несколько строк в jsx, мы заключаем наш код в скобки. ()
return ( <> <h1>List</h1> <p>No item found</p>; </> );
Вам нравится дублирование? Я думаю, что определенно нет. Дублирование считается плохой практикой в мире программного обеспечения. Давайте улучшим наш код, чтобы писать его лучше.
Давайте попробуем написать логику на JSX, но подождите, JSX не поддерживает операторы if… но мы можем визуализировать любую разметку, и есть несколько способов сделать это. Давайте пока воспользуемся троичным условием.