Как получить информацию об URL-параметрах Google Analytics при использовании перенаправления реакции-маршрутизатора для переключения страниц

Я использую редирект, чтобы перейти на последнюю страницу моего сайта. В этом редиректе я передаю ему несколько параметров URL, которые сообщают мне, что пользователь сделал до этого момента.

Проблема в том, что когда я добавил Google Analytics, он не обнаружил ни одного параметра, по которому я хотел бы иметь возможность собирать данные. Вот код в index.js:

import Analytics from 'react-router-ga';
import ReactGA from 'react-ga';

ReactGA.initialize('UA-11111111111-1');
ReactGA.pageview(window.location.pathname + window.location.search);

const allGiftsPage = () => { return ( <Results quizType="allgifts" title="All Gifts" /> )}
const popularGiftsPage = () => { return ( <Results quizType="populargifts" title="Popular Gifts" /> )}
const quizResultsPage = () => { return ( <Results title="Results" /> )}

ReactDOM.render(
  <Fragment>
    <title>Find Their Gifts</title>
    <BrowserRouter>
      <Analytics id='UA-111111111-1'>
        <Route exact path="/" component={App}></Route>
        <Route path="/results" component={quizResultsPage}></Route>
        <Route path="/allgifts" component={allGiftsPage}></Route>
        <Route path="/populargifts" component={popularGiftsPage}></Route>
      </Analytics>
    </BrowserRouter>
  </Fragment>
  , document.getElementById('root')
);

А вот код, который вызывает перенаправление:

<Redirect to={`/results?`+
  `quizType=romanticquiz` +
  `&age=${this.state.age}`+
  `&gender=${this.state.gender}`+
  `&color=${this.state.color}`+
  `&vacation=${this.state.vacation}`+
  `&word=${this.state.word}`+
  `&prison=${this.state.prison}`
}

В Google Analytics пользователь, который переходит на эту страницу со всеми этими параметрами, просто отображает "/ results", но если вы обновите страницу результатов, вы получите полный URL со всеми параметрами.

Есть ли хороший способ для меня, чтобы эта функциональность работала без переделки большой части моего кода?

Спасибо!

1 ответ

Во-первых, не уверен, почему вы используете react-ga так же как react-router-ga,

По сути, пакет response-ga довольно гибкий, а пакет response-router-ga на самом деле является простым компонентом.

Давайте посмотрим, почему не передаются никакие параметры: https://github.com/fknussel/react-router-ga/blob/master/index.js#L53

Строка 53: window.ga('set', 'page', location.pathname);

Если вы просто хотите, чтобы это работало, то изменение этого параметра для включения других частей URL будет работать. Смотрите ссылку на местоположение объекта.

Другое решение - использовать решение Reaction-ga для использования с роутером:

https://github.com/react-ga/react-ga/blob/master/demo/app/withTracker.jsx

Другие вопросы по тегам