Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
63 of 196 menu
◀ ▶

Метод scrollToLocation

Метод scrollToLocation вызывают на ссылке ref компонента SectionList. Он ставит в видимую область пункт с номером itemIndex внутри секции с номером sectionIndex. Положение в окне задает viewPosition так же, как у scrollToIndex.

Синтаксис

ref.current.scrollToLocation({ sectionIndex, itemIndex, animated, viewPosition });

Параметры

Параметр Описание
sectionIndex Номер секции в массиве sections, с нуля.
itemIndex Номер пункта внутри секции, с нуля.
animated При true прокрутка идет с анимацией.
viewPosition Доля высоты окна для выбранного пункта. 0 у начала, 0.5 по центру, 1 у конца.

Пример

Давайте прокрутим ко второму пункту первой секции:

import { useRef } from 'react'; import { SectionList, Text, Pressable } from 'react-native'; const sections = [ { title: 'abcde', data: ['12345', 'abcde', '12345'] }, { title: '12345', data: ['abcde'] }, ]; export default function App() { const ref = useRef(null); return ( <> <Pressable onPress={() => ref.current?.scrollToLocation({ sectionIndex: 0, itemIndex: 1, animated: true }) } > <Text>abcde</Text> </Pressable> <SectionList ref={ref} sections={sections} keyExtractor={(item, index) => String(index) + item} renderSectionHeader={({ section }) => <Text>{section.title}</Text>} renderItem={({ item }) => <Text>{item}</Text>} /> </> ); }

На экране после нажатия в видимой области окажется второй пункт первой секции.

Пример

Давайте откроем пункт из второй секции по центру экрана:

import { useRef } from 'react'; import { SectionList, Text, Pressable } from 'react-native'; const sections = [ { title: 'A', data: ['abcde', '12345'] }, { title: 'B', data: ['abcde', '12345'] }, ]; export default function App() { const ref = useRef(null); return ( <> <Pressable onPress={() => ref.current?.scrollToLocation({ sectionIndex: 1, itemIndex: 0, animated: true, viewPosition: 0.5, }) } > <Text>12345</Text> </Pressable> <SectionList ref={ref} sections={sections} keyExtractor={(item) => item} renderSectionHeader={({ section }) => <Text>{section.title}</Text>} renderItem={({ item }) => <Text>{item}</Text>} /> </> ); }

На экране первый пункт секции 'B' окажется ближе к середине прокрутки.

Смотрите также

  • компонент SectionList,
    который группирует список по секциям
  • метод scrollToIndex,
    который прокручивает плоский список к номеру
  • метод scrollToEnd,
    который прокручивает список к концу
  • компонент FlatList,
    который строит список без заголовков секций
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить