React SPA - GTM Analytics React-Helmet 上一页标题

Posted

技术标签:

【中文标题】React SPA - GTM Analytics React-Helmet 上一页标题【英文标题】:React SPA - GTM Analytics React-Helmet Previous Page Title 【发布时间】:2018-03-16 13:47:47 【问题描述】:

我正在使用 Google 跟踪代码管理器将网页浏览事件推送到数据层以进行分析跟踪。这发生在 componentDidMount() 中(如果我正在使用 withRouter 侦听查询字符串参数随位置属性的变化,有时是 componentWillReceiveProps())。

我正在使用react-helmet 在组件更改时动态更新我的标题和其他标签。

我注意到一个问题,即我在 Google Analytics(分析)中获得了不正确的页面标题。它经常显示上一页的页面标题,而不是我当前所在的页面标题。看来 react-helmet 直到 componentDidMount() 之后才更新标签。

页面浏览事件函数示例

每次将此事件推送到数据层时,都会调用我在 GTM 中的分析标签

const firePageViewEvent = () => 
      console.log("Pageview event fired (from tracking script)");

      if (window && window.dataLayer) 
          console.log("window and dataLayer exist, pushing pageview event.");
          let dataLayer = window.dataLayer || [];
          dataLayer.push(
              'event': 'reactPageViewEvent'
          );
       else 
          console.log("window or dataLater does not exist, cannot push pageview event.");
      
;

【问题讨论】:

【参考方案1】:

我可以确认,将函数包装在具有 0 毫秒延迟的 setTimeOut() 函数中确实可以确保仅在 react-helmet 有机会执行其操作后才推送事件。

这使我能够始终如一地在 Analytics 中获得当前页面标题

See github issue comment

更新功能

const firePageViewEvent = () => 
    setTimeout(() => 
        console.log("Pageview event fired (from tracking script)");

        if (window && window.dataLayer) 
            console.log("window and dataLayer exist, pushing pageview event.");
            let dataLayer = window.dataLayer || [];
            dataLayer.push(
                'event': 'reactPageViewEvent'
            );
         else 
            console.log("window or dataLater does not exist, cannot push pageview event.");
        
    , 0);
;

【讨论】:

现在可能有更好的解决方案,但一年多以前,这是唯一能找到的解决方法。 那个问题仍然存在...github.com/nfl/react-helmet/issues/189!让我们有一个 dataLayer.push('event':'pageTitleUpdated' 完成时发生或推送可用的 GA 使用的值,并配置 GA 使用这些而不是默认的 DOM 值 10x Matthew,这些 React / GTAG 和头盔快把我逼疯了!!!

以上是关于React SPA - GTM Analytics React-Helmet 上一页标题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GTM 启用 Google Analytics 增强型电子商务

从 SPA 中的 URL 中删除 PII (GTM/GA4)

Firebase+GTM SDK - 在 Google Analytics 中跟踪异常和崩溃

javascript Google Analytics的设备方向检测。 Google跟踪代码管理器(GTM)的修改版本。最初来自https://www.themarketingtech

使用跟踪代码管理器未在 Analytics 中显示增强型电子商务数据

如何将 Naver Analytics 添加到 Nuxt.js SPA 应用程序?