问题标签 [react-error-boundary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
20027 浏览

javascript - React 错误边界不适用于 React

这是我的错误边界文件 -

另一个文件是 -

在我的 App.js 中

它导致应用程序在没有捕获错误的情况下中断。这是在浏览器屏幕上看到的错误

在此处输入图像描述

更详细的版本在这里 - https://codepen.io/meghana1991/pen/abojydj?editors=0010

当我在本地使用与上面列出的多个文件相同的代码时,它不起作用

0 投票
1 回答
753 浏览

reactjs - 当错误边界捕获路由错误时,React-router 停止工作

下面链接的 codepen 使用react-router错误边界来捕获每个路由中的错误。

如果单击“商店”,则会按预期捕获错误,其他链接将不再起作用。这里发生了什么?为什么react-router-dom似乎停止工作?这样做的“正确”方法是什么?是<ErrorBoundary>组件有问题,还是路由组件的包装方式有问题,还是?

https://codepen.io/mpontus/pen/NyKNoL


如果 codepen 链接发生问题:

0 投票
1 回答
1337 浏览

reactjs - React.js 在 Sentry 中记录所有 GraphQL 查询

我有一个React应用程序,它周围有一个ErrorBoundary向 Sentry 发送错误的应用程序,它工作正常。我也想将我所有的 GraphQL 查询错误记录到 Sentry 中,但我现在的问题是我的所有 GraphQL 查询,我有一个 catch 块,我在其中为失败的查询调度一个操作。当我删除 catch 块时,错误会记录到 Sentry 中,但我无法触发失败的查询操作。

我现在的解决方案是放入Sentry.captureException()一个非常重复的 GraphQL 查询的每个 catch 块。

ErrorBoundary即使查询有自己的 catch 块,有没有办法允许仍然捕获 GraphQL 错误?

0 投票
1 回答
2027 浏览

reactjs - 错误边界不会从 apollo 客户端捕获错误

我试图在顶层捕获一些错误,以展示世界上最漂亮的错误页面。

出于某种原因,我看到我的节点断开连接,但错误边界从未触发。

我在一个空的 create-react-app 项目中运行它。

我希望看到<h1>Had error</h1>;我得到 CRA 未处理的错误屏幕。

0 投票
1 回答
186 浏览

reactjs - 反应:错误边界没有捕获不变违规

我想处理错误,以防我在 prop 值中有一个对象,而不是有效的反应子。所以我添加了一个错误边界但仍然有一个错误。

Uncaught Invariant Violation:对象作为 React 子对象无效(发现:带有键 {} 的对象)

为什么会发生?它不是事件处理程序,也不是 SSR,也不是异步代码。

0 投票
1 回答
494 浏览

reactjs - ReactJS - ErrorBoundaries 没有按预期工作

背景:React 版本:16.13.1 浏览器:Chrome 版本 - 81.0.4044.122

尽管在下面的代码片段中使用了 ErrorBoundary,但它会在浏览器中引发错误。处理的错误显示几毫秒,然后实际错误显示在浏览器中。有人可以帮我解决这个问题。

下面是整个代码片段:

0 投票
1 回答
1600 浏览

javascript - 发生错误边界时处理反应上下文

我有一个提供上下文的组件(=provider),一些子组件正在使用上下文。

我的提供者还包装了一个 ErrorBoundary React 组件,以防儿童崩溃。从那里,如果发生错误,ErrorBoundary React 组件将更新我上下文中的一些值。

但看起来价值没有更新,我不知道为什么。

我的代码如下所示:

错误边界组件:

和一个子组件(我的 Provider + ErrorBoundary)

if loop尽管调试时componentDidCatch正确触发了,但我从不进入内部。

0 投票
0 回答
117 浏览

reactjs - 在 componentDidCatch React JS 上的 ErrorBoundary 内获取子组件状态

我正在尝试ErrorBoundary通过遵循文档来实现,并且到目前为止是成功的。

我使用了文档中提到的相同方法

我无法完成的是MyWidget在. 我想将子组件状态连同错误一起发送到服务器,以便更容易调试。ErrorBoundarycomponentDidCatchErrorBoundary

到目前为止我尝试过的是refs使用

然后在我的子组件中,我创建了一个getState简单地返回自己状态的函数,然后在里面ErrorBoundary我使用提供的ref

它完成了这项工作并返回子组件的状态,但是当我尝试使用相同的代码来使用内部的 refs 获取状态时,这componentDidCatchthis.props.childrenRef.decoratedRef.current导致引用子组件本身。nullcurrentnull

有没有更好的方法来实现这一点?难道我做错了什么?

0 投票
0 回答
355 浏览

reactjs - componentDidCatch 第二个参数的类型与从内部调用的函数不兼容

我的组件中有一个标准componentDidCatch,其类型如下所示,并从内部调用外部 Logging 库:

然而,第 3 方日志库logErrorMessage函数的类型如下:

TS 错误消息显示如下

让我info的 componentDidCatch 参数遵守 logErrorMessage 的 ArbitraryObject 接口的最佳方法是什么?最好无需更改 Logger 库源。

0 投票
1 回答
2086 浏览

reactjs - 如何在 ErrorBoundary 内重定向?

我在我的 React 应用程序中使用 ErrorBoundary 并希望在发生错误时重定向到主页 - 但我的重定向不起作用。相反,应用程序停留在同一页面上。

相比之下,添加一个按钮允许用户在点击它时切换页面。

但是我想在发生错误时自动将用户带到那里。

当然,必须有一种简单的方法来做到这一点,而我却错过了。

我也试过返回一条没有运气的路线: