在 RTK-Query 中,为什么“isSuccess”(查询结果的属性之一)在获取结束之前变为“true”?

kyu*_*yun 3 reactjs redux rtk-query

RTK-query hook (useXXXQuery) 进行了一个查询。假设是这样useGetSomethingQuery

我正在使用 useEffect 处理其结果对象。

const res = useGetSomethingQuery(payload);

useEffect(() => {
  
  ...

  if (res.isSuccess) {
    // use the fetched Data
  }
},[res]);
Run Code Online (Sandbox Code Playgroud)

isSuccess正如您所看到的,当设置为时,我正在从服务器获取数据true

首次调用该接口,状态设置为或后,isSuccess变为。换句话说,转变成后。truefulfilledrejectedisFetchingfalse

但问题是,从第二次使用同一个api开始,isSuccess属性就变成true连取都没有结束。(它的值仍然是true)。

我认为这与缓存有些关系..但不知道。

为什么要在成功之前isSuccess转向?true

phr*_*hry 6

它不会变成真实——它保持真实。

在第一次请求端点/参数组合后,您将在缓存中拥有一个值 - 该值要么是成功,要么是失败。因此,无论当前是否正在获取数据,该数据都将保持可供您使用。

如果你使用钩子,它会更进一步。想象一下您从第 5 页转到第 6 页。当第 6 页仍在获取时,您仍然会看到第 5 页的结果,直到第 6 页成功或失败 - 并且在这段时间内您还将看到成功/错误状态第 5 页。