Интеграция React SPA с отслеживанием тепловых карт Hotjar

Я пытаюсь интегрировать библиотеку Hotjar для отслеживания тепловых карт для пользователей в нашем React SPA.

Я следовал общим учебникам, но я не смог заставить это работать.

У меня есть стандартный код отслеживания Hotjar в элементе документа.

Я использую компонент высшего порядка для подключения к маршрутизатору React и пытался вызвать и window.hj('stateChange', page), и window.hj('vpv', page), но ничего из этого не было зарегистрировано в тепловых картах Hotjar.

Вот код для HOC:

import React, { Component } from 'react';
import GoogleAnalytics from 'react-ga';

GoogleAnalytics.initialize(process.env.REACT_APP_GA_TRACKING_ID);

const withPageViewTracker = (WrappedComponent, options = {}) => {
  const trackPage = page => {
    console.log('window.hj', window.hj);
    console.log('page', page);
    // window.hj('stateChange', page);
    window.hj('vpv', page);
  };

  const HOC = class extends Component {
    componentDidMount() {
      const page = this.props.location.pathname;
      trackPage(page);
    }

    componentWillReceiveProps(nextProps) {
      const currentPage = this.props.location.pathname;
      const nextPage = nextProps.location.pathname;

      if (currentPage !== nextPage) {
        trackPage(nextPage);
      }
    }

    render() {
      return <WrappedComponent {...this.props} />;
    }
  };

  return HOC;
};

export default withPageViewTracker;

Вот как я использую HOC:

<Route exact path="/" component={withPageViewTracker(Welcome)} />

1 ответ

Вы можете использовать response hotjar
https://www.npmjs.com/package/react-hotjar

Вы можете ввести hotjar где угодно в компоненте

Обязательно используйте его после установки компонента

componentDidMount() {
    hotjar.initialize('xxxxxxx', x);
  }

Если вы используете хуки, вы можете использовать useEffect без какого-либо массива зависимостей

const SampleComponent = () => {
  useEffect(() => {
    hotjar.initialize('xxxxxxx', x);
  }, [])

Обязательно загрузите hotjar после того, как все асинхронные вещи будут выполнены, чтобы он записывал все действия, которые вы хотите

async componentDidMount() {
        await load1();
        await load2();
        hotjar.initialize('xxxxxxx', x);
}

По умолчанию Hotjar работает на SPA. И по умолчанию они отслеживают изменения в URL, если это изменения URL, а не hashchange.

Если вы хотите, чтобы Hotjar отслеживал хэш-изменения, вам необходимо настроить это в настройках.

В разделе " Сайты и организации" вы можете открыть настройки своего сайта. Здесь вы можете указать, как Hotjar должен отслеживать изменения URL, если настройки по умолчанию не работают. Ниже приводится объяснение всех вариантов.

Hotjar Настройки сайта

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