2

我试图捕捉从ReactDOM.renderor抛出的错误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);
}

此代码的结果是渲染组件的控制台日志,而不是抛出的错误。

顺便说一句 - 由于该错误,该页面没有在浏览器中呈现,但它仍然通过“尝试”并且没有被“捕获”捕获。这是为什么?

有没有办法像这样以编程方式捕获渲染错误?

谢谢。

4

0 回答 0