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

时间:2021-07-01 03:27:54

标签: reactjs apollo apollo-client react-apollo

所以我有一个带有过滤器组件的表。在初始化时,它会调用 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

0 个答案:

没有答案