通用场景 
抽象常见的使用场景,并给出解决方案。
如何执行异步任务,并展示 Loading、Error、Success 状态? 
大部分 React 页面的的逻辑都是通过接口异步请求数据,然后展示相应的结果,需要注意以下几点:
- 如何展示 Loading、Error、Success 状态?
 - 如何处理请求竞争的情况? 例如参数变化后,需要使上一次请求失效,避免上一次请求响应速度慢,导致页面展示错误数据。
 
有多种解决方案,例如:
- 通过三个不同的 
useState分别控制 loading、error 和 data,然后利用useRef手动更新latestRequestId来处理请求竞争问题。 - 通过三个不同的 
useState分别控制 loading、error 和 data,然后利用useEffect的 cleanup 函数控制竞态问题。 - 通过 
ErrorBoundary捕获错误,Suspense捕获 loading 状态,然后利用use和useMemo处理异步请求。 
具体的代码可以参考如下: