Напишите свою собственную границу ошибки или используйте реагирующую-ошибочную-границу

Проблема

Во всем программном обеспечении есть ошибки; это нормально.

Ошибки приложения React могут быть ошибками JavaScript/TypeScript, сбоем ленивой загрузки или любыми другими ошибками.

При возникновении ошибки приложение React может быть удалено с экрана браузера. Мы настроили Create React App, чтобы показать, как это происходит.

Следующая команда создает проект React:

% yarn create react-app react-error-boundary-app --template typescript
% cd react-error-boundary-app

Измените src/App.tsx, чтобы ввести ошибку:

import logo from './logo.svg';
import './App.css';

function App(props: any) {
  props.map((a: any) => a); // this throws the error that props.map is not a function
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.tsx</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

Выполните yarn start, и мы увидим ошибки времени выполнения в браузере. Следующий экран с ошибкой виден только в режиме разработки во время горячей перезагрузки. Это реакция-оверлей-оверлей, используемая приложением Create React.

Ошибки, не обнаруженные границами ошибок, могут размонтировать дерево компонентов React. Закрыв оверлей кнопкой X в правом верхнем углу, мы увидим пустой экран.

react-error-overlay можно отключить в конфигурации Webpack в webpack.config.js:

module.exports = {
  //...
  devServer: {
    overlay: false, // turn off react-error-overlay with one flag

    // or turn off react-error-overlay with the more granual setting
    // overlay: {
      // errors: false,
      // warnings: false,
      // runtimeErrors…