为什么在RTK-Query中,'isSuccess'(查询结果的属性之一)在抓取结束前变成了'true'?

In RTK-Query, Why 'isSuccess' (which is one of the properties of result a query) turns to 'true' before the fetching is over?

RTK-query hook (useXXXQuery) 有一个查询。 假设它是 useGetSomethingQuery.

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

const res = useGetSomethingQuery(payload);

useEffect(() => {
  
  ...

  if (res.isSuccess) {
    // use the fetched Data
  }
},[res]);

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

第一次调用API,状态设置为fulfilledrejected后,isSuccess变为true。也就是说,isFetching之后变成了false

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

我认为它与缓存有些关系..但对此一无所知。

为什么 isSuccess 在成功之前变成了 true

它不会变为真 - 它保持为真。

在第一次请求 endpoint/argument 组合后,您将在缓存中拥有一个值 - 该值要么成功,要么失败。因此,无论当前是否有数据提取,您都可以使用该数据。

而如果你使用的是钩子,它会更进一步。想象一下,您从第 5 页转到第 6 页。虽然第 6 页仍在抓取,但您仍会看到第 5 页的结果,直到第 6 页成功或失败为止 - 在此期间您还会看到 success/error 第 5 页的状态。