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