为什么我在哨兵中得到空洞的身体反应以征求用户反馈?

时间:2018-07-05 03:58:24

标签: javascript reactjs sentry raven

我正在使用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/

1 个答案:

答案 0 :(得分:0)

我认为您仅应调用函数componentDidCatch(..),setState(..)等来检查这种情况。不要尝试使用此功能进行业务流程。

componentDidCatch(error, info) {
    this.setState({ hasError: true });
    Raven.captureException(error, { extra: info });
}

查看this并尝试在render()方法中调用以下函数:

if (this.state.hasError) {
 Raven.showReportDialog();
}