Задать вопрос
Swimergg
@Swimergg
Пишу код, и узнаю много чего интересного

Какой API лучше всего сделать для получения динамического списка по частям?

Добрый день. Моя задача — создать динамический список пользователей, то есть добавить, удалить или изменить статус нового пользователя в любое время. На бэкэнде он сортируется по последней активности. Имеется ввиду, что недавно активные пользователи находятся вверху, а давно активные — внизу. На фронтенде у меня есть список, загружаемый с помощью слайсов (get_members # limit 20, offset 20) делая infinite-scroll. Но, если добавляется новый пользователь, логично, что он появится вверху списка, тогда как в моем случае первая часть списка уже загружена и кэширована. Соответственно, до добавления нового пользователя последний пользователь в моем списке имел ID 20, а на следующей странице список начинается с ID 21. Но когда добавляется новый пользователь, следующая страница возвращает ID 20 из-за смещения.
6980f8f8b7fd8233930318.png
Если я просто проигнорирую существующий список и сразу добавлю 20 новых пользователей, следующая страница будет буквально заполнена дубликатами, и ничего не загрузится. Как правильно спроектировать систему страниц, в которой уже загруженные страницы также могут изменяться? Я планирую хранить на фронтенде только три страницы: предыдущую, отображаемую и следующую. Также я хочу иметь возможность прокрутки вперед, например, на 20 страниц. Я представляю себе следующий сценарий: на бэкенде есть текущий отсортированный список пользователей, а фронтенд получает слайсы этого списка. У меня есть два варианта: либо заменить все локальные (фронтенд) страницы новыми пользователями и попытаться каким-то образом сохранить положение прокрутки списка, либо динамически вставлять каждую страницу и вернуться к исходной проблеме дубликатов и нестабильности. Или есть лучшие варианты? Буду благодарен за любые идеи и предложения.
Также хочу учесть, что я использую веб-сокет, а не REST API. Теоретически я мог бы поддерживать обновление текущей страницы на стороне клиента. Например, я мог бы создать события для добавления, удаления и изменения статуса конкретного пользователя. Но это теоретически может привести к проблемам с сетью и рассинхронизации
  • Вопрос задан
  • 30 просмотров
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
  • Академия Eduson
    Python-разработчик
    9 месяцев
    Далее
  • Skillbox
    Профессия 1С-программист
    8 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Воронеж
от 75 000 ₽
DimaTech Ltd Краснодар
от 130 000 до 130 000 ₽
Hard Bootstrapping LLC. Санкт-Петербург
от 250 000 до 500 000 ₽