javascript 当refetch被触发时,如何在React Query中将isLoading状态更改为true?

sqxo8psd  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(149)

当refetchCompanies被触发时,我希望将isLoadingCompanies状态设置为true,以便此组件将重新呈现。我只希望在isLoadingCompanies为true时呈现组件,而不是isFetchingCompanies为true时。
我的目标:

const {
    isLoading: isLoadingCompanies,
    isFetching: isFetchingCompanies,
    data: dataCompanies,
    refetch: refetchCompanies
} = useQuery(
    "queryCompanies",
    () => companySearchQuery(currentPage, searchTerm, token)
)

组件:

<div>
    {(!isLoadingCompanies) && companies?.map((company, index) => (
        <h3>{company?.name}</h3>
    ))}  
    {isLoadingCompanies && <LoadingDataSpinner/>}
</div>
waxmsbnn

waxmsbnn1#

当refetch被触发时,如何在React Query中将isLoading状态更改为true?
答案很简单:你不能。如果一个查询正在获取数据并且没有数据,那么它将处于loading状态。所以,在重新获取数据的过程中,如果你已经有了数据,那么你的查询将不会处于loading状态。
要显示后台重新获取的加载微调器,您可以查看从useQuery返回的isFetching值,无论是第一次获取还是重新获取,只要发生任何获取,该值都将是true。您也可以使用isRefetching只检查是否发生重新获取。

相关问题