如何解决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 函数:
2 个扩展的过滤器对象是我们感兴趣的。第一个 (1) 是通过“ll”过滤“FirsT_NAME”,它工作正常;但是在 RESET (2) 上,整个 filterSet
对象被删除,它应该返回 init/default 数据,但在我的网络中,我们看到情况并非如此。
(2) 的网络,这是不正确的,它正在重复之前的查询变量,而不是使用它被调用的变量......什么???
仅供参考:我正在使用 apollo v2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。