为什么在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,状态设置为fulfilled
或rejected
后,isSuccess
变为true
。也就是说,isFetching
之后变成了false
。
但问题是,从第二次使用相同的api,isSuccess
属性 变成true
连抓取都没有结束。 (它的值仍然是true
)。
我认为它与缓存有些关系..但对此一无所知。
为什么 isSuccess
在成功之前变成了 true
?
它不会变为真 - 它保持为真。
在第一次请求 endpoint/argument 组合后,您将在缓存中拥有一个值 - 该值要么成功,要么失败。因此,无论当前是否有数据提取,您都可以使用该数据。
而如果你使用的是钩子,它会更进一步。想象一下,您从第 5 页转到第 6 页。虽然第 6 页仍在抓取,但您仍会看到第 5 页的结果,直到第 6 页成功或失败为止 - 在此期间您还会看到 success/error 第 5 页的状态。
RTK-query hook (useXXXQuery) 有一个查询。
假设它是 useGetSomethingQuery
.
我正在使用 useEffect 处理它的结果对象。
const res = useGetSomethingQuery(payload);
useEffect(() => {
...
if (res.isSuccess) {
// use the fetched Data
}
},[res]);
如您所见,当 isSuccess
设置为 true
时,我正在从服务器获取数据。
第一次调用API,状态设置为fulfilled
或rejected
后,isSuccess
变为true
。也就是说,isFetching
之后变成了false
。
但问题是,从第二次使用相同的api,isSuccess
属性 变成true
连抓取都没有结束。 (它的值仍然是true
)。
我认为它与缓存有些关系..但对此一无所知。
为什么 isSuccess
在成功之前变成了 true
?
它不会变为真 - 它保持为真。
在第一次请求 endpoint/argument 组合后,您将在缓存中拥有一个值 - 该值要么成功,要么失败。因此,无论当前是否有数据提取,您都可以使用该数据。
而如果你使用的是钩子,它会更进一步。想象一下,您从第 5 页转到第 6 页。虽然第 6 页仍在抓取,但您仍会看到第 5 页的结果,直到第 6 页成功或失败为止 - 在此期间您还会看到 success/error 第 5 页的状态。