error.js
error 文件允许你处理意外的运行时错误并显示备用 UI。
error.js
的工作原理
error.js
将路由段及其嵌套子段包装在 React 错误边界 中。当边界内抛出错误时,error
组件会显示为备用 UI。
值得注意的是:
- React 开发者工具 允许你切换错误边界以测试错误状态。
Props
error
一个转发到 error.js
客户端组件的 Error
对象实例。
值得注意的是:在开发过程中,转发到客户端的
Error
对象将被序列化,并包含原始错误的message
,以便更容易调试。然而,在生产环境中这种行为是不同的,这是为了避免将错误中包含的潜在敏感信息泄露给客户端。
error.message
- 从客户端组件转发的错误显示原始的
Error
消息。 - 从服务器组件转发的错误显示带有标识符的通用消息。这是为了防止泄露敏感信息。你可以使用
errors.digest
下的标识符来匹配相应的服务器端日志。
error.digest
自动生成的抛出错误的哈希值。它可用于匹配服务器端日志中的相应错误。
reset
错误的原因有时可能是暂时的。在这些情况下,重试可能会解决问题。
错误组件可以使用 reset()
函数来提示用户尝试从错误中恢复。执行时,该函数将尝试重新渲染错误边界的内容。如果成功,备用错误组件将被替换为重新渲染的结果。
global-error.js
虽然不太常见,但你可以使用位于根 app 目录中的 app/global-error.js
来处理根布局或模板中的错误,即使在利用 国际化 时也是如此。全局错误 UI 必须定义自己的 <html>
和 <body>
标签。当激活时,该文件会替换根布局或模板。
值得注意的是:
global-error.js
仅在生产环境中启用。在开发环境中,我们的错误覆盖层将显示。
not-found.js
not-found
文件在路由段内调用 notFound()
函数时显示 UI。
版本历史
版本 | 变更 |
---|---|
v13.1.0 | 引入 global-error 。 |
v13.0.0 | 引入 error 。 |