React native 组件卸载时放弃处理网络请求
免责声明:我知道这个答案已经被问过了,但在我的情况下,我需要一个具体案例的解决方案,而其他问题/答案并没有真正涵盖 在我的react本机应用程序中,我执行许多网络请求,这些请求可能需要很长时间才能完成。每个请求都以两种主要方式处理:React native 组件卸载时放弃处理网络请求,react-native,redux,es6-promise,fetch-api,React Native,Redux,Es6 Promise,Fetch Api,免责声明:我知道这个答案已经被问过了,但在我的情况下,我需要一个具体案例的解决方案,而其他问题/答案并没有真正涵盖 在我的react本机应用程序中,我执行许多网络请求,这些请求可能需要很长时间才能完成。每个请求都以两种主要方式处理: 请求已成功完成。全局redux/flux状态将更新,因此嵌套组件也将更新 请求抛出一个错误。网络错误、服务器错误、400错误等等。在这种情况下,必须以屏幕上显示的消息形式或作为警报向用户显示消息 我的问题是,当卸载组件时,当请求完成时,无论如何都会处理获取回调。
- 请求已成功完成。全局redux/flux状态将更新,因此嵌套组件也将更新
- 请求抛出一个错误。网络错误、服务器错误、
错误等等。在这种情况下,必须以屏幕上显示的消息形式或作为警报向用户显示消息400
- 警报将显示在另一个屏幕上,这是不正确的,并导致我用于显示错误警报的
模式组件出现问题
- 错误消息的出现/消失由组件本地状态控制,该状态无法在未安装的组件上更新,因此会引发错误
\u isMounted
属性,在每个获取错误处理程序中,如果\u isMounted==false
,则不要执行任何操作。但是,这种方法冗长且是反模式的
我还有其他选择吗?如果您使用的是
反应导航
,我相信您可以在操作中扣除状态,而不调用警报
我的建议是,您将导航道具传递给action方法,并在那里扣除导航状态,然后根据需要调用警报。如果您使用的是
react navigation
,我相信您可以在actions中扣除状态,而不调用警报
我的建议是,将导航道具传递给action方法,并在那里扣除导航状态,然后根据需要调用警报。在哪里执行提取请求?是在组件中还是在redux操作中?提取请求在不同的文件中执行,但它们作为一种承诺向组件公开,以便以图形方式处理结果。提取请求在哪里执行?是在组件中还是在redux操作中?提取请求在不同的文件中执行,但它们作为一种承诺向组件公开,以便以图形方式处理结果