react-query:当且仅当没有错误时重新获取

Ash*_*hik 5 javascript caching state-management reactjs react-query

在我的根组件上,我使用 use 查询来获取用户详细信息。但问题是在我注册或登录之前,它重新刷新了太多次。结果我什至无法顺利填写注册/登录表单。

在此输入图像描述

有没有办法,只有回调函数没有返回错误时才会重新获取?

这是我尝试过的

const FetchCurrentUser = async () => {
  setAuthToken(localStorage.token);
  const {
    data: { user },
  } = await axios.get(`${process.env.API_URL}/api/users/auth`);

  return user;
};

const RouterController = () => {
  const { data: updatedUser, isLoading, error: fetchError } = useQuery(
    "user",
    FetchCurrentUser,
   
  );
}
Run Code Online (Sandbox Code Playgroud)

小智 3

我不确定我是否正确理解了这个问题。我假设您正在尝试获取用户数据,但如果失败您不想重试,这是正确的吗?

React Query 有一些默认值,对于新用户来说可能会很棘手。来自文档:

失败的查询会以静默方式重试 3 次,并在捕获错误并将其显示到 UI 之前进行指数退避延迟。

有关模式详细信息,请检查重要默认值

您还可以通过在useQueryenabled挂钩上将config 属性设置为 false 来停用自动请求,并使用该函数手动触发请求。refetch