为什么ReactJs错误边界不会在事件处理程序上触发?

时间:2017-10-30 16:51:54

标签: javascript reactjs error-handling

我想知道为什么我们不能对事件处理程序使用相同的错误处理技术,而不是React的其他生命周期方法。

Reacts提供了答案,但我仍然有我的顾虑。

  

错误边界不会捕获事件处理程序中的错误。

     

React不需要错误边界来从事件中的错误中恢复   处理程序。与render方法和生命周期钩子不同,事件   处理程序在渲染过程中不会发生。所以,如果他们扔了,React仍然   知道屏幕上显示的内容。

     

如果需要在事件处理程序中捕获错误,请使用常规   JavaScript try / catch语句:

我认为允许我们在错误处理上具有相同的行为将为我们提供一种统一的方式将它们显示给用户,即使它们没有在渲染时发生,事件处理程序上的错误也可能阻止用户上的交互。 UI。

我们可以使用try / catch来处理这些异常,但是我们需要创建一种新方法来处理这些错误的显示。

总之,我想知道将错误处理程序排除在错误边界之外的主要动机。

谢谢!

1 个答案:

答案 0 :(得分:-1)

参考以下链接中提到的技巧 https://jaketrent.com/post/react-error-boundaries-event-handlers/

设置状态将触发Render事件,该事件将触发componentDidCatch事件。希望这能回答你的问题。

class MyComponent extends React.Component {
  handleClick = () => {
    try {
      // something that produces an error
    } catch(err) {
      this.setState(() => { throw err; })
    }
  }
}