Я пытаюсь отловить ошибки, выданные 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);
}
Результатом этого кода является консольный журнал обработанного компонента, а не выдается ошибка.
Кстати - страница не отображается в браузере из-за этой ошибки, но все равно проходит попытку и не попадает в ловушку. Почему это так?
Есть ли способ программно отловить ошибки рендеринга?
Спасибо.