【问题标题】:Why ReactJs Error Boundaries are not triggered on event handlers?为什么 ReactJs 错误边界不会在事件处理程序上触发?
【发布时间】:2018-04-11 17:42:40
【问题描述】:

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

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

标签: javascript reactjs error-handling


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多