Как стать автором
Обновить

Infinite scroll (бесконечный скролл) +Virtualization (виртуализация) на примере ReactJS+ RTK Query

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров19K
Всего голосов 5: ↑5 и ↓0+5
Комментарии11

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

Бесконечный скролл ограниченный 100 элементами, мдам. Почему-то решили, что 7 элементов подойдут для любого размера экрана. Капитально сломали инерциальный скролл. Плюс в браузерах без поддержки привязки скролла (привет Сафари) будут постоянные скачки контента.

Статья по теме.

Было интересно в статье про скролл сначала поискать его на странице, а потом наблюдать, как он бешено скачет при прокрутке и подгрузке.

Почему нужно делать вот так
useEffect(()=>{...} )
а не просто прописать свойство onScroll

Пожалуйста изучи все хуки реакта, это очень важно. useEffect с пустым массивом зависимостей выполнится только один раз — при первом рендеринге. Без использования useEffect event listener будет перезаписывать я при каждом рендеринге. Так же обрати внимание что в колбэке useEffect возвращается функция. Она выполняется перед новым выполнением хука и при размонтировании компонента (когда он больше не используется). В данном примере автор очищает event listener, который больше не нужен.

Почему "infinity scroll", а не "infinite scroll"? Infinity - существительное.
Я не просто доколупываюсь, у меня повод есть. Как-то в ревью нашему синьору написал похожий вопрос (про Infinity loader), а он проигнорил. Вот у меня с тех пор сомнение, может, я что-то отчаянно глупое спросил?

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

Надеюсь для изобретателей бесконечного скролла в аду предусмотрен отдельный котел с бесконечным ростом температуры.

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

В конце статьи я указал, что приведенный в статье метод является альтернативой пагинации.

Базы данных здесь тоже нет, но если вы посмотрите внимательно, то увидите, что логика из статьи аналогична логике keyset pagination.

А почему не стал использовать Intersection observer?

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

Более подробно вы можете ознакомиться, например, в этой статье: https://www.google.com/amp/s/habr.com/ru/amp/publications/316136/

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации