我为我创建的搜索栏调用了一个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',
});