Итак, поскольку вы не можете хранить моментальные снимки документов в response-redux, и поскольку я не хочу переключаться на redux-firestore, что, вероятно, приведет к изменениям в моей кодовой базе, которые я не хочу go просматривать на этом этапе Я придумал это альтернативное решение.
После получения моих записей из бэкэнда Firestore я получаю последний документ в снятом снимке запроса и добавляю к нему идентификатор документа следующим образом:
var tLastDoc = querySnapshot[pageSize - 1];
tLastDoc.tDocId = querySnapshot[pageSize - 1].id;
И кеширую этот tLastDo c в redux.
И во фрагменте, где происходит подкачка страниц, я проверяю, является ли последний документ, который я собираюсь использовать для startAfter , частью моего запроса на самом деле - это только что снятый снимок документа или не -snapshot извлекается из Redx следующим образом:
if(lastDoc != null && typeof lastDoc.id === 'undefined'){
//stripped snapshot. get the document snapshot and use it for paging
} else {
//already a document snapshot, use it for paging
}
Помните из скриншотов в вопросе выше, что фактический снимок документа будет иметь свойство "id". Если «id» не определен, это фактически «снятый» моментальный снимок документа, получаемый от redux.
Если это «снятый» моментальный снимок документа, полученный из redux, я просто извлекаю снимок из серверная часть пожарного депо использует назначенное выше свойство tDocId и использует возвращенный снимок документа в качестве моего startAfter параметра.
Эта выборка последнего документа из серверной части пожарного депо будет происходить только один раз каждый раз, когда Пользователь перезапустил приложение для просмотра страниц с помощью кэшированного lastDo c в хранилище приставок. Затем подкачка будет использоваться с использованием последовательных снимков документов, полученных в конце каждой подкачки, пока приложение не будет снова фоновым.
Надеюсь, это поможет.