微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

apollo v2 useQuery 使用不正确的变量重新获取

如何解决apollo v2 useQuery 使用不正确的变量重新获取

所以我有一个带有过滤器组件的表。在初始化时,它会调用 useQuery获取数据。从这个钩子中,我得到以下结果对象:{ data,loading,error,refetch }.

假设,这些是初始化结果:

1. banana
2. apple
3. blue Berry
4. pear
5. strawBerry

在过滤器更改时,我使用带有新变量的 refetch获取更新数据。这一切正常。

所以我放入了过滤器:pp 并且它正确地返回:

1. apple

但是,在过滤器上单击 RESET(与 init 上的查询变量相同)时,它似乎出错了。它似乎不是使用请求的变量来获取,而是使用与先前查询相同的变量来获取;结果是点击 RESET 按钮只会返回与上次过滤器更改相同的数据。

过滤操作:重置,预期结果:

1. banana
2. apple
3. blue Berry
4. pear
5. strawBerry

过滤动作:RESET,实际结果:

1. apple

所以这是在过滤器更改时设置新的重新获取查询变量的代码

const [refetchFilter,setRefetchFilter] = useState(null);

setRefetchFilter({
  ...getQueryVariables({
    filterSet,getPageCount: true,offset: 0,propertyId,scopeFilterSet,source: "useFilterRefetch",}),});
console.log("FILTER EVENT (to refetch)",filterSet);

这是使用新变量重新获取useEffect 监视 refetchFilter 状态:

export default function useFilterRefetch({ refetch,refetchFilter }) {
  useEffect(() => {
    if (refetchFilter) {
      console.log("IM REFETCHING NEW FILTER STUFF");

      refetch({ ...refetchFilter });
    }
  },[refetchFilter]);
}

您可以在我的日志中看到 CORRECT 变量正在传递给 refetch 函数

enter image description here

2 个扩展的过滤器对象是我们感兴趣的。第一个 (1) 是通过“ll”过滤“FirsT_NAME”,它工作正常;但是在 RESET (2) 上,整个 filterSet 对象被删除,它应该返回 init/default 数据,但在我的网络中,我们看到情况并非如此。

(1) 的网络,这是正确的:

enter image description here

(2) 的网络,这是不正确的,它正在重复之前的查询变量,而不是使用它被调用的变量......什么???

enter image description here

仅供参考:我正在使用 apollo v2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。