Spec-Zone.ru › React Native

СписокРазделов

Высокопроизводительный интерфейс для отображения разделенных списков, поддерживающий самые удобные функции:

  • Полностью кроссплатформенный.
  • Настраиваемые колбэки видимости.
  • Поддержка заголовков списка.
  • Поддержка подвалов списка.
  • Поддержка разделителей элементов.
  • Поддержка заголовков разделов.
  • Поддержка разделителей разделов.
  • Поддержка разнородных данных и элементов отображения.
  • Перетаскивание для обновления.
  • Загрузка при прокрутке.

Если вам не нужна поддержка разделов и вы хотите более простой интерфейс, используйте <FlatList>.

  • Компонент функции
  • Компонент класса

Это удобная обертка вокруг <VirtualizedList>, и поэтому она наследует её свойства (а также свойства <ScrollView>), которые не указаны здесь явно, а также следующие замечания:

  • Внутреннее состояние не сохраняется, когда содержимое прокручивается за пределы окна рендеринга. Убедитесь, что все ваши данные захватываются в данных элементов или внешних хранилищах, таких как Flux, Redux или Relay.
  • Это PureComponent, что означает, что он не будет перерисовываться, если props остаются одинаковыми. Убедитесь, что всё, от чего зависит ваша функция renderItem, передаётся как свойство (например, extraData), которое не === после обновлений, иначе ваш интерфейс может не обновиться при изменениях. Это включает в себя свойство data и состояние родительского компонента.
  • Для ограничения памяти и обеспечения плавной прокрутки содержимое рендерится асинхронно вне экрана. Это означает, что можно прокручивать быстрее, чем скорость заполнения, и на мгновение увидеть пустое содержимое. Это компромисс, который можно настроить в соответствии с потребностями каждого приложения, и мы работаем над его улучшением за кулисами.
  • По умолчанию список ищет свойство key в каждом элементе и использует его в качестве ключа React. Также вы можете предоставить свойство keyExtractor.

Справочник

Свойства

Свойства VirtualizedList

Наследует Свойства VirtualizedList.

Обязательное
renderItem

По умолчанию рендерер для каждого элемента в каждом разделе. Может быть переопределён для каждого раздела. Должен возвращать React-элемент.

Тип
функция

Функции рендера будет передан объект со следующими ключами:

  • 'item' (объект) - объект элемента, как указано в ключе data этого раздела
  • 'index' (число) - индекс элемента в разделе.
  • 'section' (объект) - полный объект раздела, как указано в sections.
  • 'separators' (объект) - объект со следующими ключами:
    • 'highlight' (функция) - () => void
    • 'unhighlight' (функция) - () => void
    • 'updateProps' (функция) - (select, newProps) => void
      • 'select' (перечисление) - возможные значения: 'leading', 'trailing'
      • 'newProps' (объект)

Обязательное
sections

Фактические данные для отображения, подобно свойству data в FlatList.

Тип
массив Разделов

extraData

Свойство-маркер для указания списку перерендеринга (поскольку он реализует PureComponent). Если какие-либо ваши функции renderItem, Заголовок, Подвал и т. д. зависят от чего-либо вне свойства data, поместите это сюда и обрабатывайте неизменяемым.

Тип
любой

initialNumToRender

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

Тип Значение по умолчанию
число 10

inverted

Инвертирует направление прокрутки. Использует преобразования масштаба -1.

Тип Значение по умолчанию
логическое значение false

ItemSeparatorComponent

Отображается между каждым элементом, но не вверху и внизу. По умолчанию предоставляются свойства highlighted, section, и [leading/trailing][Item/Section]. renderItem предоставляет separators.highlight/unhighlight, которые обновят свойство highlighted, но вы также можете добавить пользовательские свойства с помощью separators.updateProps.

Тип
компонент, элемент

keyExtractor

Используется для извлечения уникального ключа для заданного элемента в указанном индексе. Ключ используется для кэширования и как ключ React для отслеживания переупорядочивания элементов. По умолчанию извлечение проверяет item.key, а затем использует индекс как резервный вариант, как и React. Обратите внимание, что это устанавливает ключи для каждого элемента, но каждый раздел в целом всё ещё нуждается в своём собственном ключе.

Тип
(элемент: объект, индекс: число) => строка

ListEmptyComponent

Отображается, когда список пуст. Может быть компонентом React (например, SomeComponent или React-элементом (например, <SomeComponent />).

Тип
компонент, элемент

ListFooterComponent

Отображается в самом конце списка. Может быть компонентом React (например, SomeComponent или React-элементом (например, <SomeComponent />).

Тип
компонент, элемент

ListHeaderComponent

Отображается в самом начале списка. Может быть компонентом React (например, SomeComponent или React-элементом (например, <SomeComponent />).

Тип
компонент, элемент

onEndReached

Вызывается один раз, когда положение прокрутки находится в пределах onEndReachedThreshold от отображаемого содержимого.

Тип
(информация: { distanceFromEnd: число }) => void

onEndReachedThreshold

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

Тип Значение по умолчанию
число 2

onRefresh

Если указано, будет добавлен стандартный RefreshControl для функциональности "Перетащить для обновления". Убедитесь, что также правильно задано свойство refreshing. Для смещения RefreshControl от верха (например, на 100 точек), используйте progressViewOffset={100}.

Тип
функция

onViewableItemsChanged

Вызывается при изменении видимости строк, как определено свойством viewabilityConfig.

Тип
(колбэк: { changed: массив ViewTokens, viewableItems: массив ViewTokens }) => void

refreshing

Установите это значение в true, ожидая новых данных с обновления.

Тип Значение по умолчанию
логическое значение false

removeClippedSubviews

Примечание: может содержать ошибки (отсутствующее содержимое) в некоторых случаях - используйте на свой страх и риск.

Это может улучшить производительность прокрутки для больших списков.

Тип Значение по умолчанию
логическое значение false

renderSectionFooter

Отображается внизу каждого раздела.

Тип
(информация: { раздел: Раздел }) => элемент, null

renderSectionHeader

Отображается вверху каждого раздела. Они прикрепляются к верхней части ScrollView по умолчанию в iOS. См. stickySectionHeadersEnabled.

Тип
(информация: { раздел: Раздел }) => элемент, null

SectionSeparatorComponent

Отображается вверху и внизу каждого раздела (обратите внимание, что это отличается от ItemSeparatorComponent, который отображается только между элементами). Они предназначены для разделения разделов от заголовков выше и ниже и обычно имеют тот же ответ при выделении, что и ItemSeparatorComponent. Также получает highlighted, [leading/trailing][Item/Section], и любые пользовательские свойства из separators.updateProps.

Тип
компонент, элемент

stickySectionHeadersEnabled

Прикрепляет заголовки разделов к верху экрана до тех пор, пока следующий заголовок не отцепит его. По умолчанию включено только в iOS, так как это стандартной платформы.

Тип Значение по умолчанию
логическое значение false
Android
true
iOS

Методы

flashScrollIndicators()
iOS

flashScrollIndicators();

Временно отображает индикаторы прокрутки.

recordInteraction()

recordInteraction();

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

scrollToLocation()

scrollToLocation(params);

Прокручивает элемент в указанном sectionIndex и itemIndex (внутри раздела) в области видимости так, что viewPosition 0 помещает его в верхнюю часть (и он может быть скрыт закреплённым заголовком), 1 — в нижнюю, а 0,5 — по центру.

Примечание: невозможно прокрутить к позициям за пределами области рендеринга без указания getItemLayout или onScrollToIndexFailed свойства.

Параметры:

Имя Тип
params
Обязательно
объект

Допустимые params ключи:

  • 'animated' (булево) — Прокручиваться ли списку с анимацией. По умолчанию true.
  • 'itemIndex' (число) — Индекс элемента в разделе, к которому нужно прокрутить. Обязательно.
  • 'sectionIndex' (число) — Индекс раздела, содержащего элемент, к которому нужно прокрутить. Обязательно.
  • 'viewOffset' (число) — Фиксированное количество пикселей для смещения конечной позиции, например, для компенсации закреплённых заголовков.
  • 'viewPosition' (число) — Значение 0 помещает элемент, определённый индексом, в верхнюю часть, 1 — в нижнюю, а 0.5 — по центру.

Определения типов

Раздел

Объект, определяющий данные, которые нужно отобразить для данного раздела.

Тип
любой

Свойства:

Имя Тип Описание
data
Обязательно
массив Данные для рендеринга элементов в этом разделе. Массив объектов, очень похожий на FlatList свойство данных.
key строка Необязательный ключ для отслеживания переупорядочения разделов. Если вы не планируете переупорядочивать разделы, по умолчанию используется индекс массива.
renderItem функция Необязательно, определите произвольный рендерер элементов для этого раздела, переопределив стандартный renderItem для списка.
ItemSeparatorComponent компонент, элемент Необязательно, определите произвольный разделитель элементов для этого раздела, переопределив стандартный ItemSeparatorComponent для списка.
keyExtractor функция Необязательно, определите произвольную функцию извлечения ключей для этого раздела, переопределив стандартную keyExtractor.

© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/sectionlist

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API