大量的api调用会减慢你的网页应用程序的运行速度,现在的浏览器只允许少量的并行 api 调用,因此减少 api 调用可以带来更好的性能。通常我们会在移除组件时忽略取消 api调用,这可能是因为这会使代码更加冗长,或者我们不知道这种情况。然而,不取消不仅会导致阻塞某些 tcp 连接,还会导致内存泄漏和更新移除了的组件的状态。就像这样:
我开发了一个自定义hook,以一种很简单、很干净的方式处理这个用例。hook如下:
这是一个使用它的示例:
现在你可以使用 getData 方法做尽可能多的 api 请求,甚至更新状态和错误处理,你只需要传递你的 setState 方法,确保在 useEffect 中返回 cancelRequests 方法,它将取消 getData 发出的所有 api 请求。
你可以使用 async await 以及 getData 返回一个 promise 并传递额外的对象来添加标题和其他内容。
现在我们有了非常干净且易于理解的优化代码,行数更少。
当我遇到新用例时,我将添加更多自定义hook,如果您想保持联系,这是我的 Github存储库。
谢谢。