Обработка бесконечного смещения прокрутки при добавлении/обновлении элементовJavascript

Форум по Javascript
Ответить
Anonymous
 Обработка бесконечного смещения прокрутки при добавлении/обновлении элементов

Сообщение Anonymous »

Я работаю над личным проектом, который представляет собой трекер различных расходов, подписок, кредитов и т. д. (все это отдельные сущности). Каждый пользователь имеет свою личную учетную запись и может видеть только элементы, связанные с ним, поэтому вероятность одновременного редактирования минимальна.
Я отображаю список элементов в виде бесконечного списка прокрутки со смещением с ручным поиском следующей части (назовем это «страницей» в кавычках). Каждый из этих объектов имеет возможность применения различных фильтров (дата, подстрока и т. д.) и сортировок, применяемых к нему пользователем; некоторые имеют предустановленную сложную и непрямую сортировку (например, просрочено или будет просрочено через 2 недели + приоритет + временная метка) на серверной стороне, если пользователь не запрашивает простую сортировку.
Вопрос в том, как сохранить правильный порядок элементов в пользовательском интерфейсе при добавлении или редактировании существующих элементов. Обычно я вижу 2 варианта, если я не хочу заставлять пользователя прокручивать до «страницы», которую он/она/они редактировали элемент:
  • Сделать запросы POST и PATCH для возврата метаданных позиции нового/отредактированного элемента в рамках текущей применимой сортировки и вставить новый/отредактированный элемент в состояние (я использую React) на основе этого индекса, если его позиция находится на одной из уже полученных "страницы".
    Плюсы:
    • довольно просто
    • очень близко к SSOT, поскольку никаких манипуляций на внешнем интерфейсе не производится
    • относительно небольшая нагрузка на серверную часть
    Минусы:
    • вероятность добавления или редактирования элементов на нескольких устройствах очень мала, но не равна нулю (займы манипулируются одновременно на двух устройствах, [например, одна и та же учетная запись используется несколькими членами семьи]) и таким образом потенциально могут возникнуть дубликаты или неправильный порядок.
  • Перезагружать все загруженные «страницы».
    />Плюсы:
    • очень просто
    • нет дубликатов и всегда правильный порядок
    Минусы:
    • большая рабочая нагрузка на серверную часть, особенно если пользователь много прокручивает вниз
    • концептуально неэффективно, если позиции большинства элементов остаются прежними
Хотя пользователей почти нет, второй вариант выглядит лучше, несмотря на накладные расходы, но с масштабированием у него все больше и больше недостатков.
Есть ли какой-либо другой потенциальный вариант, который я упускаю из виду
  • сохраняет все загруженные страницы
  • всегда показывает правильный порядок, даже если данные обрабатываются несколькими устройствами


Подробнее здесь: https://stackoverflow.com/questions/798 ... g-elements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»