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

当 cntrl+单击以在我们网站上的 chrome 中打开一个新选项卡时,某些查询似乎不想运行

如何解决当 cntrl+单击以在我们网站上的 chrome 中打开一个新选项卡时,某些查询似乎不想运行

我会尽我所能解释这一点。我们有获取用户信息和权限的 apollo graphql 查询但我遇到了这些查询实际完成的问题,当我控制 + 单击以打开新选项卡并等到它完成加载后再访问它。似乎获取用户权限的查询实际上从未返回任何内容

强制查询获取策略为 network-only 解决了这个问题,我不知道为什么。我们不希望这是一个解决方案,因为:
A. 感觉像是变通了。
B. 这是一个相当密集的查询。如果我们可以缓存我们想要做的数据。当我将查询强制设为 network-only 时,几乎需要半秒的时间。

作为参考,代码如下:

const { loading,data } = useQuery(GET_INITIAL_DATA);

  const { loading: permissionsLoading,data: permissionsData } = useQuery(
    GET_PERMISSIONS_ASYNC,{
      skip: loading
    }
  );

// not worried about this first useEffect
  useEffect(() => {
    if (loading) {
      return;
    }
    setViewer(data.viewer);
  },[data]);

// this useEffect doesn't make it past the early return
  useEffect(() => {
    if (permissionsLoading || !permissionsData) {
      return;
    }
    setViewer({
      ...viewer,...{ permissions: permissionsData.viewer.permissions },...{ roles: permissionsData.viewer.roles }
    });
  },[permissionsData]);

第二个 useEffect 中的代码应该等到 permissionsData 完成获取,然后将这些权限分配给查看器对象。但是,在上面的场景中,我在访问之前控制 + 单击并等待选项卡打开,permissionsData 永远不会进入。就好像查询从未真正完成/重新获取一样。

这里是否有我遗漏的概念?为什么我是否真的在查看选项卡以便查询正确触发和获取数据很重要?有没有不必强制查询network-only解决方案?

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