Apollo 3 分页与开始和限制更多以及字段策略
Posted
技术标签:
【中文标题】Apollo 3 分页与开始和限制更多以及字段策略【英文标题】:Apollo 3 pagination with start and limit more and Field Policies 【发布时间】:2021-02-16 03:17:43 【问题描述】:我正在使用这样的 fetchmMore Apollo 函数:
const
data: data_next_drops,
loading: loading_next_drops,
error: error_next_drops,
fetchMore: fetchMoreNext,
refetch: refetchNext
= useQuery(GET_ALL_NEXT_DROPS,
variables:
date: date,
limit: limit,
start: starte
,
);
const loadMore = async () =>
setLoading(true)
fetchMoreNext(
variables:
date: date,
limit: 10,
start: Skip
,
updateQuery: (preveResult, fetchMoreResult) =>
setSkip(Skip+limit)
fetchMoreResult.drops = [
...preveResult.drops,
...fetchMoreResult.drops
]
setLoading(false)
return fetchMoreResult;
)
但我有这个警告:
The updateQuery callback for fetchMore is deprecated, and will be removed
in the next major version of Apollo Client.
Please convert updateQuery functions to field policies with appropriate
read and merge functions, or use/adapt a helper function (such as
concatPagination, offsetLimitPagination, or relayStylePagination) from
@apollo/client/utilities.
The field policy system handles pagination more effectively than a
hand-written updateQuery function, and you only need to define the policy
once, rather than every time you call fetchMore.
如您所见,我使用 limit 和 start 进行分页,所以我认为我不能使用 offsetLimitPagination 或 relayStylePagination,所以这可以使用 concatPagination 吗?还是有其他方法?
提前谢谢你!
【问题讨论】:
【参考方案1】:警告只是告诉你将updateQuery
函数移出InMemoryCache
。
请参阅pagination documentation(完整阅读,我第一次错过了一些重要信息),或者因为我有一个不相关的问题使我产生了这个sandbox,并提供了一个非常接近你的工作示例。
【讨论】:
以上是关于Apollo 3 分页与开始和限制更多以及字段策略的主要内容,如果未能解决你的问题,请参考以下文章