ReactGA.initialize должен быть вызван первым - PullRequest
0 голосов
/ 01 марта 2020

Я получаю следующее предупреждение несколько раз (для нескольких страниц), несмотря на то, что я инициализируюсь на root моего приложения. Это заставляет меня задуматься, работает ли Google Analytics правильно? [react-ga] ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually

Я использую ReactGA для обработки своих тегов Google Analytics и не могу заставить его работать. Согласно документации и нескольким другим вопросам, касающимся этого онлайн, все, что мне нужно сделать, это вставить это в мое приложение root:

Приложение. js:

import ReactGA from 'react-ga';
ReactGA.initialize('G-xxxxxxxxxx');

const app = () => (
    // Root level components here, like routing and navigation
)

Я использую серверную визуализацию, поэтому я проверяю, существует ли объект window перед отслеживанием. Эта строка ставится в конце моего импорта на каждой из моих страниц:

пример страницы. js:

import ReactGA from 'react-ga';
if (typeof(window) !== 'undefined') {
    ReactGA.pageview(window.location.pathname + window.location.search);
}

function page() {
    return(<div className="page">Hello, World</div>)
}

export default page;

На данный момент информации не так много о том, как настроить Google Analytics для приложений SSR, поэтому я не совсем уверен, что мне нужно сделать, чтобы это работало. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 07 марта 2020

Я наконец-то нашел решение после долгих попыток с потенциальными решениями. Поскольку просмотр страницы запускался до того, как инициализация могла завершиться sh, я устала откладывать просмотр страницы настолько, насколько могла, поместив его в componentDidMount(). Эта реализация выглядит следующим образом:

Приложение. js:

//imports
import ReactGA from 'react-ga';
ReactGA.initialize('UA-xxxxxxxxx-x');

const App = () => (
  <div className="App">
    <Navigation />

    <AppRouting />
  </div>
);

Страница. js:

import ReactGA from 'react-ga';

class MusiciansAide extends React.Component {
    componentDidMount() {
        ReactGA.pageview(window.location.pathname + window.location.search);
    }

    render() {
        return(
            <Component />
        );
    }
}
...