Я пытаюсь создать свое приложение, чтобы оно не считывало все 200+ документов при загрузке, а несколько при загрузке и захватывало остальные при прокрутке вниз.
У меня есть рабочий код, который позволяет мне получить страницу результатов, скажем, 2, затем нажать «Далее» и получить следующие 2, но я хочу, чтобы следующие 2 были добавлены к последнему, чтобы пользователь мог прокрутить назад.
Я пытаюсь вставить свою мутацию, но это создает вложенный беспорядок. Возвращает 3 с последним, имеющим 2.
Мутация
setAddons(state, payload) {
state.addons = payload;
},
nextAddons(state, payload) {
state.addons.push(payload);
},
Мои 2 действия. Каждый загружается со страницей, чтобы захватить первый набор. Второе, прямо сейчас, когда я нажимаю кнопку, но, надеюсь, связывается с событием прокрутки, как только я это отсортировал.
async firstAddons({ commit }) {
let addonsData = [];
return await db
.collection('addons')
.where('publish', '==', true)
.orderBy('timeUpdated', 'desc')
.limit(10)
.get()
.then(querySnapshot => {
querySnapshot.forEach(doc => {
addonsData.push({
...doc.data(),
id: doc.id,
timeUpdated: doc.data().timeUpdated.toDate(),
timeCreated: doc.data().timeCreated.toDate()
});
let last = querySnapshot.docs[querySnapshot.docs.length - 1];
commit('setLast', last);
});
commit('setAddons', addonsData);
});
},
async nextAddons({ commit, state }) {
let addonsData = [];
await db
.collection('addons')
.where('publish', '==', true)
.orderBy('timeUpdated', 'desc')
.startAfter(state.last.data().timeUpdated)
.limit(10)
.get()
.then(querySnapshot => {
querySnapshot.forEach(doc => {
addonsData.push({
...doc.data(),
id: doc.id,
timeUpdated: doc.data().timeUpdated.toDate(),
timeCreated: doc.data().timeCreated.toDate()
});
let next = querySnapshot.docs[querySnapshot.docs.length - 1];
commit('setLast', next);
});
commit('nextAddons', addonsData);
console.log(state.addons);
});
},
Что возвращается
(3) [{…}, {…}, Array(2), __ob__: Observer]
0: {…}
1: {…}
2: Array(2)
0: {…}
1: {…}
length: 2
length: 3
Ожидаемые результаты состоят в том, что следующая страница результатов должна быть перенесена в конец последних результатов и продолжена.
Фактические результаты: массив помещает каждый набор во вложенный массив.
Как я могу собрать их в один непрерывный массив для использования в моем шаблоне?
Спасибо