我正在使用ReactJS为Sentry设置用户反馈。
我用以下方法初始化它:
$(document).ready(function(){
$(document).on('click', '.plus', function() {
$(".plus").each(function() {
var iconSpan = $(this).find('.icon');
if ($(this).hasClass('collapsed')) {
$(iconSpan).removeClass('fa-plus').addClass('fa-minus');
} else {
$(iconSpan).removeClass('fa-minus').addClass('fa-plus');
}
});
});
});
并使用ErrorBoundary(https://reactjs.org/docs/error-boundaries.html)概念中的componentDidCatch来显示报告对话框。
import Raven from 'raven-js';
Raven.config(https://#########@sentry.io/#######, {
environment: "development",
}).install();
当我提交对话框时,网络会向我显示一个POST请求以及200响应以及成功对话框。但是,该正文为空,并且在我的哨兵帐户的项目的用户反馈部分中看不到提交的表单。
行为看起来像在此站点上看到的:https://wiggly-power.glitch.me/
答案 0 :(得分:0)
我认为您仅应调用函数componentDidCatch(..),setState(..)等来检查这种情况。不要尝试使用此功能进行业务流程。
componentDidCatch(error, info) {
this.setState({ hasError: true });
Raven.captureException(error, { extra: info });
}
查看this并尝试在render()方法中调用以下函数:
if (this.state.hasError) {
Raven.showReportDialog();
}