Поймать ошибки из ReactDOM.render с помощью Try / Catch - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь отловить ошибки, выданные ReactDOM.render или ReactDOMServer.renderToString.

Я не могу использовать componentDidCatch, потому что я пытаюсь смоделировать ошибку, выданную в SSR. Я знаю, что при рендеринге SSR нет ловушек жизненного цикла, поэтому я пытаюсь также использовать ReactDOM.render.

Вот пример кода

Компонент выдает ошибку во время рендеринга:

import React from 'react';

export class Test extends React.Component<any> {
  public componentDidMount(): void {
    this.setState(() => {
      throw new Error('Error');
    });
  }

  public render() {
    return <div>Hello</div>;
  }
}

И код, который пытается перехватить сгенерированную ошибку:

try {
  const rendered = ReactDOM.render(<Test />, document.getElementById('root'));
  console.log(rendered);
} catch (e) {
  console.log(e);
}

Результатом этого кода является консольный журнал обработанного компонента, а не выдается ошибка.

Кстати - страница не отображается в браузере из-за этой ошибки, но все равно проходит попытку и не попадает в ловушку. Почему это так?

Есть ли способ программно отловить ошибки рендеринга?

Спасибо.

...