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:未在突变子字段上调用解析器

Apollo 客户端:mutate 不是函数

是否可以将 Apollo GraphQL 响应映射为单一类型?

如何在 react/apollo 中调用条件 useQuery 钩子

Apollo RESTDataSource调用其他RESTDataSource?