Создайте представление списка в React с помощью TypeScript

Фото Маркуса Винклера на Unsplash

Отображение списка элементов — это то, чем постоянно занимаются веб-разработчики. В React нет стандартного способа рендеринга списка элементов, однако есть некоторые шаблоны, которые, безусловно, полезно знать. Мы собираемся изучить некоторые из них в этом посте.

Детский массив

Давайте начнем с базового подхода, который должен работать в большинстве случаев, а именно с передачи элементов списка в childrenprop.

Я использую React.Children.map , поэтому мне не нужно беспокоиться, является ли childrenэто одним элементом или массивом элементов. Обратите внимание, что ListViewкомпонент отвечает за структуру списка, в этом примере он утверждает семантически правильное ulи liрасположение тегов. Вот как может выглядеть пример использования

Очень просто, очень читабельно! Вы также можете использовать этот подход, если заранее не знаете количество элементов.

Просто помните, что каждый раз, когда вы визуализируете список, который можно переупорядочить или отфильтровать, вы должны предоставить ключевую поддержку (React предупредит вас, если вы этого не сделаете).

Рендер опоры

Второй подход более гибкий, но и несколько более сложный. Я говорю о паттерне рендеринга . Вот как может выглядеть код списка.

Возможно, вы заметили, что его нельзя использовать повторно, поскольку он явно определяет Itemтип. Мы можем сделать лучше, давайте использовать TypeScript Generics, чтобы список не был привязан к конкретному Itemинтерфейсу.

Это намного лучше, теперь он будет работать с любым массивом элементов, если каждый элемент удовлетворяет AbstractItemинтерфейсу. Давайте посмотрим, как это можно использовать.

Обратите внимание, что TypeScript правильно интерпретирует тип элемента в rendererфункции.

Так почему же паттерн Render Prop более мощный? Он имеет доступ к необработанным данным элементов, а не только к реагирующим узлам, как в предыдущем подходе. Это может иметь много вариантов использования. В качестве примера я могу предоставить предикат, который будет использоваться для фильтрации элементов перед их отображением.

Клиент может указать любой filterFn, который принимает один элемент и возвращает логическое значение.

В этом примере будут отображаться только первые два элемента.

Резюме

Я представил некоторые основные строительные блоки, которые можно настроить для удовлетворения более специфических потребностей. Надеюсь, вы найдете их полезными, спасибо за чтение!

Suggested posts

Как избежать разрушительных последствий инсульта: уроки семейного опыта.

Как избежать разрушительных последствий инсульта: уроки семейного опыта.

Введение Инсульт — это неотложная медицинская помощь, которая может случиться с кем угодно в любое время. Это происходит, когда приток крови к части мозга нарушается, что приводит к внезапной потере функции мозга.

Революция без программирования: обеспечение процветания бизнеса с помощью Webflow, Framer, Bubble.io,

Революция без программирования: обеспечение процветания бизнеса с помощью Webflow, Framer, Bubble.io,

Отправляйтесь в захватывающее путешествие инноваций и успеха, используя неиспользованный потенциал этих удивительных платформ без кода. Позвольте мне поделиться с вами историей о Сапне, замечательной женщине-предпринимателе.

Related posts

Почему некоторые фрилансеры притворяются своей жизнью

Почему некоторые фрилансеры притворяются своей жизнью

Недавно я был в Linkedin, крупнейшей в мире профессиональной социальной сети, и нашел посты дизайнеров-фрилансеров, за которыми я следил и которые привлекли мое внимание. Все они публиковали фотографии из самолетов, на пляже со своими ноутбуками, из бассейнов и офисов с потрясающими видами.

Как спасти планету и заработать деньги

Как спасти планету и заработать деньги

Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.

Опасные разговоры

Опасные разговоры

Если мы хотим продолжать процветать на этой планете, нам придется вести опасные разговоры. Те, которые бросают вызов тому, что мы сделали, что мы делаем и что мы в настоящее время собираемся продолжать делать (или планируем делать).

Преследование христиан: преступление на почве ненависти, о котором мы не говорим

Забудьте об исламофобии: христиане (и евреи) являются главными жертвами преступлений на почве религиозной ненависти.

Преследование христиан: преступление на почве ненависти, о котором мы не говорим

Любой здравомыслящий человек знает, что в политических и медийных кругах доминируют левые, даже крайне левые, что создает дисбаланс в политическом дискурсе. В области религии этот дисбаланс хорошо виден: левые газеты и сети не спешат защищать христианскую веру.