ScrollToLocation не работает при начальном монтировании - PullRequest
1 голос
/ 23 января 2020

Я бы хотел добавить SectionList в мое приложение так, чтобы оно отображалось в заданный c раздел (это не первый раздел в списке). Вызов scrollToLocation для componentDidMount не работает; однако, добавление кнопки, которая вызывает scrollToLocation, делает. Есть причина для этого?

Может ли это быть из-за ссылки на SectionList (я пробовал несколько подходов для назначения ссылки, например, назначение переменной, назначение функции, используя createRef, et c.)?

Здесь это ссылка на урезанную закусочную Expo, чтобы проиллюстрировать, что я имею в виду: https://snack.expo.io/@bobbymoogs / scrolltolocation-on-componentdidmount .

1 Ответ

1 голос
/ 02 апреля 2020

Я нашел лучшее решение в этой теме - использовать onLayout для запуска прокрутки:

scrollToInitialPosition = () => {
  this.scrollViewRef.scrollTo({ y: 100 });
}
...
<ScrollView
  ref={(ref) => { this.scrollViewRef = ref; }}
  onLayout={this.scrollToInitialPosition}
/>

Обратите внимание, что есть множество других предложений, использующих setTimeout, componentDidUpdate, InteractionManager и др. c. Однако использование onLayout было единственным, что сработало для меня (а также мне кажется, что оно самое чистое).

...