Есть ли способ вызвать onEndReached только в плоском списке, когда пользователь фактически прокручивает страницу вниз?

#react-native #pagination #flatlist

Вопрос:

У меня есть экран, на котором есть такой плоский список (я заменил нерелевантный код, ... чтобы сделать вопрос как можно более легко читаемым).:

 <FlatList
  data={messages}
  keyExtractor={item => item.id}
  ListFooterComponent={...}
  onEndReachedThreshold={0}
  onEndReached={onNextPageLoadHandler}
  refreshControl={...}
  renderItem={...}
/>
 

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

т.е.

  • Всего страниц сообщений = 2
  • Количество сообщений, помещающихся на одной странице = 2
  • Общее количество сообщений = 4

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

Желаемое поведение: Когда пользователь впервые появляется на экране, он должен увидеть первые 2 сообщения. Однако следующие 2 сообщения не должны загружаться до тех пор, пока пользователь не окажется в конце списка И когда он фактически выполнит прокрутку, когда он окажется в нижней части списка.

Я не уверен, что эту проблему можно решить, но я ценю любое понимание!

Комментарии:

1. почему бы не использовать onScroll, чтобы определить, прокручивается ли он снизу, но я не понимаю, как пользователи могут прокручивать его, поскольку содержимое не отображается на одном экране. или вы можете просто попробовать установить onEndReachedThreshold={1}, надеюсь, это вам поможет