javascript - 全局捕获 React 错误

标签 javascript reactjs error-handling exception-handling react-redux

我是 React 的新手。我想捕获所有反应未捕获和意外的错误/警告,我想将错误记录到外部 api。我知道它可以通过 Try Catch 方法实现,但我计划在全局范围内使用它,这样其他开发人员就不必每次都编写代码。

我尝试了 window.onerror/addEventListener('error', function(e){},它只捕获 Javascript 错误但不响应错误。

这类似于以下帖子 How do I handle exceptions? .但是给出的解决方案并不能满足我的需求。

有人可以帮我解决这个问题吗?

最佳答案

文档引用:https://reactjs.org/blog/2017/07/26/error-handling-in-react-16.html

实战案例:

// app.js
const MOUNT_NODE = document.getElementById('app');

const render = (messages) => {
  ReactDOM.render(
    <Provider store={store}>
      <LanguageProvider messages={messages}>
        <ConnectedRouter history={history}>
          <ErrorBoundary>
            <App />
          </ErrorBoundary>
        </ConnectedRouter>
      </LanguageProvider>
    </Provider>,
    MOUNT_NODE
  );
};

// ErrorBoundary component
export default class ErrorBoundary {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  componentDidCatch(error, info) {
    // Display fallback UI
    this.setState({ hasError: true });
  }

  render() {
    if (this.state.hasError) {
      return (
        <div>
          // error message
        </div>
      );
    }

    return this.props.children;
  }
}

关于javascript - 全局捕获 React 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40234855/

相关文章:

javascript - 提交时 - 至少勾选一个复选框

javascript - 有没有一种优雅的方式将 npm run 选项传递给 grunt 选项

laravel - 尝试catch在Laravel中间件中无法正常工作吗?

ruby-on-rails - Rails + React 应用程序页面需要重新加载才能呈现 React

javascript - 根据对象数组中存在的属性设置状态 : React+Typescript

java - 我想从抛出Java程序的当前异常中提取一个字符串

python - Scikit-learn SVM : Reshaping X leads to incompatible shapes

javascript - 使用 JavaScript 进行实时搜索时重新加载名称的问题

javascript - 没有依赖项的 Angularjs 注入(inject)器错误

node.js - 在 Mac 上运行 react 时出现错误 : ENFILE: file table overflow, scandir