首页 > 解决方案 > 为什么我不能对 react-query refetchQueries 进行 redux-saga 调用?

问题描述

我正在尝试没有成功yield的方法,如下所示:refetchQueries

    yield call(queryClient.refetchQueries,
      [EReactQueryKeys.LIST_MIX, urlParams.sceneId],
      { active: true, exact: true }
    );

这不会引发错误,但call不要调用该方法并且什么也不会发生,但据我所知call效果可以调用承诺的方法,我在调用我的服务时使用该行为,就像这样:

    yield call(MixService.create, urlParams, mixName);

即使MixService.createasync方法而不是生成器,这也可以正常工作。

更进一步,为什么如果我创建一个async包装器,它会按预期工作?这让我对“为什么我不能只是callyield这种方法”产生更大的疑问?

    const wrapper = async (sceneId: string) => queryClient.refetchQueries(
      [EReactQueryKeys.LIST_MIX, sceneId],
      { active: true, exact: true },
    );

    yield call(wrapper, urlParams.sceneId); // Inside my saga fn

如果我得到类型或返回,refetchQueries我得到这也是一个承诺,但由于某种原因,refetchQueries调用时它不会按预期工作。如果我在没有如下call效果的情况下运行该方法,它可以正常工作:

    queryClient.refetchQueries(
      [EReactQueryKeys.LIST_MIX, urlParams.sceneId],
      { active: true, exact: true },
    );

我是否遗漏了有关call效果行为的某些信息refetchQueries

标签: reactjstypescriptreact-reduxredux-sagareact-query

解决方案


推荐阅读