【发布时间】:2019-07-30 09:15:39
【问题描述】:
免责声明:我知道这个答案已经被问过,但是在我的情况下,我需要针对其他问题/答案未真正涵盖的特定案例的解决方案。
在我的 react-native 应用程序中,我做了很多可能需要很长时间才能完成的网络请求。每个请求都以两种主要方式处理:
- 请求成功完成。全局 redux/flux 状态会更新,因此嵌套组件也会更新。
- 请求引发错误。网络错误、服务器错误、
400错误等等。在这种情况下,必须以显示在屏幕上的消息或警报的形式向用户显示消息。
我的问题是,当卸载组件时,无论如何都会在请求完成时处理获取回调。第一种情况,这不是问题:商店更新成功,大家都很开心。
在第二种情况下,这是一个问题,因为:
- 警报将显示在不同的屏幕中,这是不正确的,并导致我用来显示错误警报的
Modal组件出现问题。 - 错误消息的出现/消失由组件 LOCAL 状态控制,无法在未安装的组件上更新,因此会引发错误。
我在这里有哪些可能的解决方案?最简单的方法是在每个组件中使用_isMounted 属性和在每个获取错误处理程序中,如果_isMounted == false 则不要执行任何操作。然而,这种方法是冗长的并且是一种反模式。
我还有其他选择吗?
【问题讨论】:
-
获取请求在哪里执行?是在组件中还是在 redux 操作中?
-
获取请求在不同的文件中执行,但它们作为 Promise 暴露给组件以便以图形方式处理结果
标签: react-native redux es6-promise fetch-api