我试图捕捉从ReactDOM.render
or抛出的错误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);
}
此代码的结果是渲染组件的控制台日志,而不是抛出的错误。
顺便说一句 - 由于该错误,该页面没有在浏览器中呈现,但它仍然通过“尝试”并且没有被“捕获”捕获。这是为什么?
有没有办法像这样以编程方式捕获渲染错误?
谢谢。