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

问题描述 投票:0回答:1

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

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

我注意到一个问题,我在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.");
      }
};
reactjs google-analytics single-page-application google-tag-manager react-helmet
1个回答
0
投票

我可以确认在具有0ms延迟的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);
};
© www.soinside.com 2019 - 2024. All rights reserved.