如何管理应用内的接口请求?
这是一个值得讨论的问题,涉及如下若干方面:
- 避免多次调用同一个请求(不同页面或不同组件)?
- 失败了自动重试?
- 切换浏览器 tab 返回页面时,自动发送请求更新数据?
- 列表滚动位置恢复?
- …….
这些问题可以在以下几个社区方案里找到答案(react-query 似乎更胜一筹):
- reacrt-query:https://zhuanlan.zhihu.com/p/261146977
- swr:https://swr.vercel.app/zh-CN
- ahooks/useRequest:https://ahooks.js.org/zh-CN/hooks/async
许多人会将多处使用的接口数据,存储到 Redux 等全局状态去管理,以减少重复的请求。理论上来说这是不合理的,状态管理会因此而变得混乱、臃肿,也给代码编写带来了额外的负担。
使用以上方案后,类库内部自动管理接口数据的状态,暂且称之为“服务端状态”,在任意的页面、组件都可以保持相同的 Hooks 方式调用,而全局只会发送一次请求,因此,状态管理需要存储的数据可以大幅减少。除此之外,还有自动重试、切屏更新数据等强大的封装功能,是日常应用开发的利器。