我正在使用ReactJS为Sentry设置用户反馈。
我用以下命令初始化它:
import Raven from 'raven-js';
Raven.config(https://#########@sentry.io/#######, {
environment: "development",
}).install();
并使用 componentDidCatch in ErrorBoundary(https://reactjs.org/docs/error-boundaries.html( 概念来显示报告对话框。
componentDidCatch(error, info) {
this.setState({ hasError: true });
Raven.captureException(error, { extra: info });
Raven.showReportDialog();
}
当我提交对话框时,网络向我显示一个带有 200 响应的 POST 请求和一个确认对话框,表明它已成功。但是,正文为空,提交的表单无法在我的哨兵帐户的项目的用户反馈部分看到。
该行为在此站点上看到:https://wiggly-power.glitch.me/
我认为您应该只调用函数组件DidCatch(..(,setState(...(等来检查这种情况。不要尝试在此函数中执行业务流程。
componentDidCatch(error, info) {
this.setState({ hasError: true });
Raven.captureException(error, { extra: info });
}
看看这个并尝试在 render(( 方法中调用这些函数:
if (this.state.hasError) {
Raven.showReportDialog();
}