Как добавить результат fetchMore в data хука apollo?
Переношу пагинацию на аполло. Есть хук запроса:
const { data, fetchMore, updateQuery } = useQuery(FETCH_MORE, {
variables: {
offset: 0,
limit: 20,
}
})
Попытался сделать так:
fetchMore({
variables: {
offset: data.fetchMore.length,
},
updateQuery: (previous: any, { fetchMoreResult }: any): any => {
if (!fetchMoreResult) {
return previous
}
console.log("fetchMoreResult:", previous, fetchMoreResult)
return {
fetchMore: {
...fetchMoreResult.fetchMore,
data: [...previous.fetchMore, ...fetchMoreResult.fetchMore],
},
}
},
})
Но пишет, что во первых метод устарел, во вторых есть предыдущие данные, но нет входящих. Метод конкатенации для хука так же не работает:
updateQuery(prevData => ({
data: [result, ...prevData]
}))
Подскажите как решить вопрос.
Структура данных в логе:
Upd: Получилось сделать колхозно с отдельным стейтом, в который я просто пишу результат, но вопрос не снимаю, ибо это плохое решение:
fetchMore({
variables: {
offset: data.fetchMore.length,
},
updateQuery: (previous: any, { fetchMoreResult }: any) => {
const result = [...fetchMoreResult.fetchMore, ...previous.fetchMore];
setMessages(result)
return result;
}
})
