У меня есть календарь, управляемый данными из Firebase. Когда пользователь выполняет редактирование, перемещая или изменяя размер задачи, он быстро возвращается к своей исходной позиции, затем база данных обновляет клиента, и новые данные отображаются на странице.
Здесь простую диаграмму для объяснения:
A - User moves task in calendar UI
↓
B - UI flicks back to its previous position
↓
C - Data is sent to Cloud Firestore
↓
D - Updated data is returned to the client via a realtime listener
↓
E - UI is updated
Задержка между точками A и E может составлять всего 50 мс, но во времени до 1000 мс.
Есть ли способ после пользователь вносит изменения, чтобы хранить временные данные в браузере пользователя, которые отражают обновления, в то время как данные в firestore обновляются? Когда прослушиватель в реальном времени срабатывает, он сбрасывает временные данные, и все будет обновлено.
Это мой текущий код для прослушивания изменений и обновления переменной projects
:
const [projects, loadingProjects, errorProjects] = useCollection(
organisationID && firebase.firestore().collection('organisations').doc(organisationID).collection("projects"),
{
snapshotListenOptions: { includeMetadataChanges: true },
}
);
Как бы я go о реализации такой системы в React?