当我将 no-cache
设置为查询的获取策略时,会发生很多奇怪的事情。
第一个问题:. load more
按钮不再起作用,因此为了使其再次起作用,我添加了 notifyOnNetworkStatusChange: true,
并开始起作用,但再次出现第二个问题。
第二个问题:如果没有我自己的 mergeFunction
,fetch more 根本不起作用。所以我也加了这个..
function mergeFunction(existing: [], incoming: []) {
if (!incoming) return existing;
if (!existing) return incoming;
return [...existing, ...incoming];
}
const client = new ApolloClient({
uri: subgraphUrl,
cache: new InMemoryCache({
typePolicies: {
Query: {
fields: {
daos: {
keyArgs: ['where', ['name']],
merge: mergeFunction,
},
},
},
},
}),
connectToDevTools: true,
});
但是出现了第三个问题。
第三个问题:在我点击 load more
按钮后,执行这个
const loadMore = async () => {
if (fetchMore) {
fetchMore({
variables: {
offset: visibleDaoList.length,
},
});
}
};
事实证明,在列表中,记录会一遍又一遍地重复,并且列表永远不会结束。即使我有 10 条记录,我还是可以一次又一次地点击加载更多,它会显示重复的内容。
我做错了吗?出于某种原因,我需要使用 no-cache
...