【发布时间】:2018-04-11 17:42:40
【问题描述】:
我想知道为什么我们不能对事件处理程序使用与 React 的其他生命周期方法相同的错误处理技术。
Reacts 提供了答案,但我仍然有我的顾虑。
错误边界不会在事件处理程序中捕获错误。
React 不需要错误边界来从事件错误中恢复 处理程序。与渲染方法和生命周期钩子不同,事件 处理程序不会在渲染期间发生。所以如果他们抛出,React 仍然 知道要在屏幕上显示什么。
如果您需要在事件处理程序中捕获错误,请使用常规 JavaScript try/catch 语句:
我认为允许我们在错误处理上具有相同的行为将为我们提供一种向用户显示它们的统一方式,即使它们没有在渲染时发生,事件处理程序上的错误可能会阻止用户在用户界面。
我们可以使用 try/catch 来处理这些异常,但是我们需要创建一种新方法来处理这些错误的显示。
总之,我想知道将错误处理程序排除在错误边界之外的主要动机。
谢谢!
【问题讨论】:
-
我在 react :github.com/facebook/react/issues/11409 上做了同样的问题,他们指出了文档:reactjs.org/docs/error-boundaries.html#how-about-event-handlers,虽然这并不能回答我的问题,但更多地了解 React 光纤的工作原理我猜 react 并不真正知道在渲染生命周期期间事件处理程序上发生了什么,尽管无法捕获异常。
标签: javascript reactjs error-handling