React Native中的全局未处理注释侦听器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Native中的全局未处理注释侦听器相关的知识,希望对你有一定的参考价值。

是否有任何等价物

window.addEventListener('unhandledrejection', (event) => {});

在React Native?

我知道我可以将fetch api包装在一个地方来处理大多数未处理的抛出事件,但是全局处理程序将帮助任何承诺,而不仅仅是来自fetch api的承诺。

答案

这不是一个容易的问题。

所有浏览器尚不支持“unhandledrejection”事件(请参阅browser compatibility on MDN)。默认的React Native的Promises实现有另一种机制来捕获未处理的拒绝(参见here)。

如果你想要这个功能(我也想要它自己!),你可以使用一个实现它的JS Promise库。 Bluebird就是一个很好的例子。但是,您必须确保应用中的每个Promise都使用此实现。

例如,在React Native应用程序的index.js文件中:

import Promise from 'bluebird';

// We use the "Bluebird" lib for Promises, because it shows good perf
// and it implements the "unhandledrejection" event:
global.Promise = Promise;

// Global catch of unhandled Promise rejections:
global.onunhandledrejection = function onunhandledrejection(error) {  
  // Warning: when running in "remote debug" mode (JS environment is Chrome browser),
  // this handler is called a second time by Bluebird with a custom "dom-event".
  // We need to filter this case out:
  if (error instanceof Error) {
    logError(error);  // Your custom error logging/reporting code
  }
};

以上是关于React Native中的全局未处理注释侦听器的主要内容,如果未能解决你的问题,请参考以下文章

React native firebase - facebook登录未触发onAuthStateChanged侦听器

使用React Native Fetch中的对象响应时未处理的Promise Rejection

React Native 未处理的承诺拒绝 | React-Native,异步,

React Native,全局使用状态?

在哪里使用 React 中的 Hooks 定义需要来自全局状态的数据的套接字事件侦听器

React Native 中的全局变量/常量