javascript - 在 React google Analytics 中应用错误处理

标签 javascript reactjs google-analytics google-analytics-api

我在 React 应用程序中使用 react-ga ( https://www.npmjs.com/package/react-ga ) 模块,以便我可以将事件发送到 Google Analytics。

我已阅读 react-ga 的文档,但在将数据发送到 Google Analytics 后找不到响应的方法。

我发送数据的方式是这样的:

import *  ReactGA from 'react-ga'

  function sendEvent(category: string, action: string, label: string) {
    ReactGA.event({
      category,
      action,
      label,
    });
  }

  function sendPageView(title: string, url: string) {
    ReactGA.set({ page: title });
    ReactGA.send()
    ReactGA.pageview(url);
  }

这些只是对 google-analytics 的调用,没有任何反馈,我正在寻找的是一个获取回调的函数或执行上述操作的异步函数。

向 go​​ogle-analytics 发出 POST 请求:

实际上,每次我发送事件时,都会有一个自动 POST 请求,该请求会在响应时获取 1。(我无法控制POST 请求)
请求如下所示:请求 URL:https://www.google-analytics.com/j/collect?v=1&_v=...

我试图完成的任务是捕获错误并将其发送到 Sentry 服务器:

  • 如果 Google 分析服务器没有响应,则会出现错误
  • 如果 google-analytics.com 的响应超时,则会出现错误。

可能这个模块的功能受到限制,有其他人使用类似的东西并设法得到任何类型的错误吗?

谢谢。

最佳答案

我根据官方的谷歌分析文档解决了这个问题:https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallback

我附上解决方案,供引用:

  1. 发送事件并在完成后调用回调函数:
    ReactGA.ga('send', 'event', 'Page view' {
      hitCallback: (res: any) => {
        console.log('*** page view event success.');
        return true;
      },
    });
  • 发送一个事件并将其计时为1秒。 如果到那时没有执行回调,我会引发超时错误,否则我会执行成功代码:
  •  let alreadyCalled: boolean = false;
        function myCode(timeout: boolean, hasResponded: boolean) {
          if (alreadyCalled) return;
    
          alreadyCalled = true;
    
          if (timeout === true && hasResponded === false) {
            // TODO, THROW AN ERROR AND SEND TO SENTRY
            console.log('Time out error, sending message to Sentry..');
          } else if (timeout === false && hasResponded === true) {
            // TODO, send event success
            console.log('send event to google-analytics, success');
          }
        }
    
        ReactGA.ga('send', 'event', 'pageview', { hitCallback: () => myCode(false, true) });
        setTimeout(() => myCode(true, false), 10);
    

    我希望它可以帮助任何需要类似东西的人。

    关于javascript - 在 React google Analytics 中应用错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73474737/

    相关文章:

    google-analytics - 谷歌分析漏斗只显示第一步的退出

    google-analytics - Google Analytics API 不返回数据

    javascript - Jquery 在 ajax Post 期间更改数据...为什么?

    javascript - 通过 ID 为表创建一个自动粗体 ??用javascript

    javascript - keyup 在 IE 8 中不起作用

    javascript - react Hook : old state value persisting in closure

    javascript - 我正在使用 create-react-app,我需要在没有服务器的情况下直接在浏览器中打开 build/index.html

    reactjs - 如何模拟 JavaScript window.open 和 window.close?

    javascript - 如何在 Cordova 中实现 Google 标签管理器

    javascript - 会在promise循环中解决break循环迭代吗?