Apollo 是不是可以在调用 useLazyQuery 后清除数据 obj
Posted
技术标签:
【中文标题】Apollo 是不是可以在调用 useLazyQuery 后清除数据 obj【英文标题】:Apollo is it possible to clear the data obj after calling useLazyQueryApollo 是否可以在调用 useLazyQuery 后清除数据 obj 【发布时间】:2021-05-07 07:04:09 【问题描述】:我为我创建的搜索栏调用了 apollo 惰性查询钩子,当我清除搜索栏中的数据时,我想从钩子中清除数据变量。我无法在线查看这是否可能
const [
getAutoComplete,
data: autoCompleteItems, loading: loadingAutoComplete ,
] = useLazyQuery(SEARCH,
variables: limit: 10 ,
);
我在这里打电话给getAutoComplete
:
useEffect(() =>
if (searchQuery.length > 1 && searchQuery !== '')
getAutoComplete( variables: criteria: searchQuery );
if (searchFocus && searchQuery === '')
// In here I want to do something like set autoCompleteItems = undefined
getAutoComplete( variables: criteria: '' );
, [searchQuery]);
基本上,当我清除 searchQuery 时,autoCompleteItems 变量仍在使用前一个。但是当它为空时,我希望它是未定义的,最好不要调用 api。
【问题讨论】:
【参考方案1】:你什么时候清除 searchQuery,graphql 缓存你的数据,所以如果你不需要,像这样使用 no-cache:
getAutoComplete,
data: autoCompleteItems, loading: loadingAutoComplete ,
] = useLazyQuery(SEARCH,
variables: limit: 10 ,
fetchPolicy: 'no-cache',
);
【讨论】:
这似乎不起作用。我认为因为 autoCompleteItems 变量仍然存储值 @ousmane784 这个问题可能和你一样:***.com/questions/44079618/…以上是关于Apollo 是不是可以在调用 useLazyQuery 后清除数据 obj的主要内容,如果未能解决你的问题,请参考以下文章
vue-apollo 是不是可以从 Playground 返回不同的结果?
是否可以将 Apollo GraphQL 响应映射为单一类型?