React 错误处理 - 为什么应用程序崩溃?

约西

我缺少一些基本的东西,但由于我自己没有找到,我克服了尴尬并决定在这里发布......

我希望以下代码呈现“错误”,但之后不会崩溃。但是,在 chrome 中运行时,它会崩溃,并显示以下内容:

崩溃错误

这是为什么?

这是代码:

应用程序.js:

import React, { Component } from 'react';
import Child from 'components/Child';

export default class App extends Component {

  constructor(props) {
    super(props);
    this.state = { error: null, errorInfo: null };
  }

  componentDidCatch(error, errorInfo) {

    this.setState({
      error: error,
      errorInfo: errorInfo
    });
    console.log(`%c In App/componentDidCatch. error: ${error}, errorInfo:`, 'color: #222; background: #dfd');
    console.log(this.state.errorInfo);
  }

  render() {
    console.log(`%c In App/render. error: ${this.state.error}, errorInfo:`, 'color: #222; background: #dfd');
    console.log(this.state.errorInfo);
    if (this.state.error) {
      return (
        <div>
          Error
        </div>
      );
    }

    return (
      <div>
        <Child />
      </div>
    );
  }
}

儿童.js

import React, { Component } from 'react';

export default class Child extends Component {
  render() {
    throw new Error('Child crashed!');
    return (
      <div>
        Child is here
      </div>
    );
  }
}
月季

为了让它工作,你应该渲染你的子组件包裹在 App 中:

import React, { Component } from 'react';

export default class ParentComponent extends Component {
  render() {
    return (
      <App>
        </Child>
      </App>
    );
  }
}

和 App 渲染方法:

render() {
  console.log(`%c In App/render. error: ${this.state.error}, errorInfo:`, 'color: #222; background: #dfd');
  console.log(this.state.errorInfo);
  if (this.state.error) {
    return (
      <div>
        Error
      </div>
    );
  }

  return this.props.children
}

您还应该考虑更改 App 组件的命名。

更新(在评论中讨论后)。

您正在使用react-create-app内置叠加层来发出错误信号。阅读问题react-create-app了解更多。提示:您可以使用 x 关闭此叠加层(在您的网站上查找)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Sass在React应用程序中被错误处理

来自分类Dev

为什么即使使用错误边界,我的React应用程序也会崩溃?

来自分类Dev

如何在我的React应用程序中添加常规错误处理?

来自分类Dev

应用程序的C错误处理

来自分类Dev

错误处理程序中的错误处理

来自分类Dev

应用程序中的错误处理程序功能

来自分类Dev

尽管进行了错误处理,Windows 8.1 XAML应用程序仍然崩溃

来自分类Dev

VBA:错误处理程序中的错误

来自分类Dev

HTTP 响应错误处理 Angular 应用程序

来自分类Dev

对于客户端和服务器错误,无状态React表单的最佳错误处理流程是什么?

来自分类Dev

NSKeyedUnarchiver错误处理-防止Swift崩溃

来自分类Dev

C程序中的错误处理程序

来自分类Dev

链许诺错误处理程序

来自分类Dev

禁用Laravel错误处理程序

来自分类Dev

全局错误处理程序的任何异常

来自分类Dev

如何使用Bluebird错误处理程序?

来自分类Dev

带通量的错误处理程序

来自分类Dev

带“ With”语句的VBA错误处理程序

来自分类Dev

python中的错误处理程序

来自分类Dev

从tomcat到码头的错误处理程序

来自分类Dev

错误处理程序不要求承诺

来自分类Dev

骆驼中的多个错误处理程序

来自分类Dev

NASM程序集中的异常/错误处理

来自分类Dev

改造Rxjava错误处理程序

来自分类Dev

OSB - JMS - 错误处理程序

来自分类Dev

错误处理程序如何工作?

来自分类Dev

需要帮助实现错误处理程序

来自分类Dev

NodeJs/Typescript 错误处理程序输入

来自分类Dev

React全局错误处理程序不适用于异步componentDidMount。尝试了componentDidCatch和window.onerror