将React SPA与hotjar热图跟踪集成

时间:2017-09-29 07:49:49

标签: reactjs react-router single-page-application heatmap 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)} />

2 个答案:

答案 0 :(得分:3)

您可以使用react 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);
}

答案 1 :(得分:0)

默认情况下,Hotjar适用于SPA。并且默认情况下,如果它是url更改而不是hashchange,则它们跟踪url中的更改。

如果您希望Hotjar跟踪哈希变化,则需要在设置中进行配置。

站点和组织中,您可以访问站点设置。在这里,您可以指定如果默认设置不起作用,Hotjar应如何跟踪URL更改。以下是所有选项的说明。

Hotjar Site Settings