redux 在未聚焦的窗口上禁用RTK查询的短轮询,并在恢复聚焦时重新验证

mqkwyuun  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(109)

我正在使用Redux Toolkit和RTK Query来管理React应用程序中的API调用和状态。
对于一个特定的API,我尝试通过短轮询来模拟实时更新效果,并通过以下方式调用API简化器中定义的API,

const { data, error, isLoading } = useGetAPIQuery(
    {},
    { pollingInterval: 5000 }
  );

但是,我希望在用户离开窗口时停止短轮询,例如将获得焦点的选项卡切换到另一个选项卡,并在窗口再次获得焦点时重新验证数据。
RTK查询是否可以实现?
Github上发布的问题相同,也提出了类似问题

j2datikz

j2datikz1#

当然,您可以使用像use-window-focus这样的包来检测焦点。

const windowFocused = useWindowFocus();
  const { data, error, isLoading } = useGetAPIQuery(
    {},
    { pollingInterval: windowFocused  ? 5000 : false }
  );
sd2nnvve

sd2nnvve2#

我在docs中发现了条件获取
我们可以使用一个钩子来检查窗口是否处于焦点中,例如use-window-focuslibrary
然后将此布尔值传递到skip选项中,页面将在窗口重新聚焦时立即自动重新生效

const { data, error, isLoading } = useGetAPIQuery(
    {},
    { pollingInterval: 5000, skip: isWindowFocused }
  );

相关问题