加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native – 如何为所有redux-observable史诗添加全局错误处

发布时间:2020-12-15 20:16:30 所属栏目:百科 来源:网络整理
导读:我使用redux-observable处理React Native应用程序.我有10个史诗,全部以.catch(err = console.error(err))结尾,以便在史诗中出现错误时显示React Native“Red box”(见 https://facebook.github.io/react-native/docs/debugging.html#errors). 我如何定义一个
我使用redux-observable处理React Native应用程序.我有10个史诗,全部以.catch(err => console.error(err))结尾,以便在史诗中出现错误时显示React Native“Red box”(见 https://facebook.github.io/react-native/docs/debugging.html#errors).

我如何定义一个全局错误处理程序,由所有史诗使用(稍后由combineEpics函数组合)?

解决方法

redux-observable倾向于RxJS的惯用范例几乎所有你要做的事情.当您将Epics组合在一起时,您将创建一个具有正常功能(action $,store)签名的新Epic.因此,这个新的Epic代表了各个Epics的所有输出,包括错误.

您可以通过定义自己的rootEpic并撰写combineEpics()调用的结果来利用这一事实.由于Epics是工厂,你需要记住传递(动作$,商店)!

这是一种方式:

export const rootEpic = (action$,store) =>
  combineEpics(epic1,epic2,epic3)(action$,store) // <-- call epic w/ args
    .do({ error: err => console.error(err) });

您可能不应该使用.catch()运算符,因为.catch()用于在发生错误时返回其他一些Observable.如果您只想记录错误(而不是尝试恢复),.do()是理想的操作符 – 它的目的是允许您执行对流本身没有任何影响的外部副作用(如日志记录) .

撰写史诗是非常强大的,不仅仅是在这种情况下,而是我们计划很快描述的许多其他内容.

与.catch()运算符相关,您可能还对the RFC for better default error handling感兴趣.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读