gpt4 book ai didi

apollo-client - notifyOnNetworkStatusChange 究竟做了什么?

转载 作者:行者123 更新时间:2023-12-04 11:26:09 33 4
gpt4 key购买 nike

我有一个问题,其中 loading执行 refetch 时属性不正确.我在某处读到 notifyOnNetworkStatusChange为 true 会解决这个问题。
但是我们注意到在使用这个属性后我们有一些用例,我们最终会遇到无限 refetch循环没有很好的解释。
有人能解释一下 notifyOnNetworkStatusChange 到底是什么吗?完全在 useQuery 钩子(Hook)上做什么?什么时候用,有没有特别的fetch-policy你需要配合使用吗?

最佳答案

好像notifyOnNetworkStatusChange: true是为了让我们检查当前 networkStatus您的 useQuery ,这是一个数字。然后基于networkStatus变量我们可以选择我们自己的策略render当前组件。
重要提示:loading将是 undefined没有 notifyOnNetworkStatusChange: true以下代码来自
https://www.apollographql.com/docs/react/data/queries/#inspecting-loading-states

import { NetworkStatus } from '@apollo/client';

function DogPhoto({ breed }) {
const { loading, error, data, refetch, networkStatus } = useQuery(
GET_DOG_PHOTO,
{
variables: { breed },
notifyOnNetworkStatusChange: true,
},
);

if (networkStatus === NetworkStatus.refetch) return 'Refetching!';
if (loading) return null;
if (error) return `Error! ${error}`;

return (
<div>
<img src={data.dog.displayImage} style={{ height: 100, width: 100 }} />
<button onClick={() => refetch()}>Refetch!</button>
</div>
);
}
如果你注意到代码 if (networkStatus === NetworkStatus.refetch) return 'Refetching!' ,这意味着当 refetch()被调用的 DogPhoto 组件将更改为 Retching!直到完成。
下面的链接解释了 networkstatus 中每个数字的含义.
https://github.com/apollographql/apollo-client/blob/master/src/core/networkStatus.ts#L4
它用于反射(reflect)您的 useQuery 当前状态.然后根据状态,如果事情失败,您可以对其进行进一步的操作,但我相信您总是可以在没有它的情况下创建自己的解决方案。

关于apollo-client - notifyOnNetworkStatusChange 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66500173/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com