Redux Toolkit Query status废弃后如何用isLoading等判断请求状态?
Redux Toolkit Query 废弃status后请求状态判断方法
你说的「isLoading和isFetching为false且isSuccess为true对应fulfilled状态」是完全正确的,下面把各个请求状态的判断逻辑理清楚,同时区分首次加载和后续请求的不同场景:
各状态对应判断逻辑
- Pending(首次加载中):
isLoading === true,仅在第一次发起请求、还未拿到任何结果时触发。 - Fetching(后续请求中):
isFetching === true,适用于已经获取过数据,正在重新请求(比如轮询、手动触发重取)的场景。 - Fulfilled(请求成功完成):
isLoading === false && isFetching === false && isSuccess === true,此时数据已经成功返回并可正常使用。 - Rejected(请求失败):
isError === true,不管是首次加载失败还是后续请求失败,都用这个状态判断。
结合你的代码示例的实际使用
const { data, isLoading, isError, isFetching, isSuccess } = useGetUsersQuery() // 首次加载中 if (isLoading) { return <div>正在加载用户数据...</div> } // 已有数据,正在刷新 if (isFetching) { return <div>正在刷新用户数据...</div> } // 请求失败 if (isError) { return <div>加载用户数据失败,请稍后重试</div> } // 请求成功完成(对应原fulfilled状态) if (isSuccess) { return ( <ul> {data.map(user => ( <li key={user.id}>{user.name}</li> ))} </ul> ) }
补充说明
isLoading和isFetching的核心区别在于:isLoading只针对首次请求的等待阶段,而isFetching覆盖所有请求(首次、后续)的等待阶段,这种拆分能让你更精准地给用户展示不同的加载提示(比如首次加载用骨架屏,后续刷新只显示小加载图标)。
内容的提问来源于stack exchange,提问作者TSDev
相关产品推荐
相关产品推荐

