Apollo是否可以在调用useLazyQuery后清除数据对象



我为我创建的搜索栏调用了一个apollo lazy查询钩子,当我清除搜索栏中的数据时,我想从钩子中清除data变量。我在网上查不到这是否可行

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。

何时清除searchQuery, graphql缓存数据所以如果你不需要,使用no-cache:

getAutoComplete,
{ data: autoCompleteItems, loading: loadingAutoComplete },
] = useLazyQuery(SEARCH, {
variables: { limit: 10 },
fetchPolicy: 'no-cache',
});

最新更新