События React-GA запускаются в консоли отладки, но не отображаются в GA

Я несколько дней пытаюсь сделать это, но ничего не работает. События просто не фиксируются, что бы я ни делал.

Я импортирую ReactGA вверху

import ReactGA from "react-ga";

Я инициализирую его после импорта

ReactGA.initialize("TRACKING-ID", {
  debug: true
});

Создаю функцию для работы с трекером

const GASignInHandler = name => {
  ReactGA.event({
    category: "Dashboard Home",
    action: `User Signing In As ${name}`,
    label: "Tracking users every time they sign in.",
    nonInteraction: true
  });
};

Внутри моего функционального компонента под названием DashHome, а внутри return я называю это. В значительной степени, если signedIn = true, запустите эту функцию, если не запустите console.log. Очевидно, это сделано для целей тестирования, но я до сих пор не вижу, чтобы это событие регистрировалось в GA. Он запускается при отладке.

{signedIn ? GASignInHandler(userEmail) : console.log("signin not true")}

[response-ga] с fieldObject: {"hitType": "event", "eventCategory": "Dashboard Home", "eventAction": "User Signing as My", "eventLabel": "Отслеживание пользователей каждый раз, когда они входят в систему. . "," nonInteraction ": true} log.js: 2 [response-ga] с трекерами: undefined

У меня также есть все теги, которые GA сказал мне поместить в мой public / index.html.


person 0rando    schedule 04.03.2020    source источник


Ответы (1)


Помещение этого в index.js устранило проблему.

(function initAnalytics() {
  initGA("Tracking ID");
})();

Функция initGA создается вручную и является таковой (этот файл называется index.js).

import ReactGA from "react-ga";

export const initGA = trackingID => {
  ReactGA.initialize(trackingID);
};

export const PageView = () => {
  ReactGA.pageview(window.location.pathname + window.location.search);
};

export const Event = (category, action, label) => {
  ReactGA.event({
    category,
    action,
    label
  });
};

Я также удалил все скрипты, которые были у меня в public / index.html. У меня только response-ga init.

Также кажется, что вы должны поставить

События ReactGA

в ловушку useEffect, если вы используете функциональные компоненты.

person 0rando    schedule 04.03.2020
comment
›Также кажется, что вы должны поместить события ReactGA в ловушку useEffect, если вы используете функциональные компоненты. Это не совсем так. Часто это хорошая идея, поэтому они не запускаются снова каждый раз при повторном рендеринге компонента; но в некоторых случаях (например, когда повторный рендеринг означает важное действие) вы можете пожелать, чтобы они это сделали. - person Andy; 13.02.2021