将 React SPA 与 hotjar 热图跟踪集成

dav*_*geo 11 heatmap single-page-application reactjs react-router 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;
Run Code Online (Sandbox Code Playgroud)

这是我如何使用 HOC:

<Route exact path="/" component={withPageViewTracker(Welcome)} />
Run Code Online (Sandbox Code Playgroud)

sum*_*mit 6

您可以使用 react hotjar
https://www.npmjs.com/package/react-hotjar

您可以在组件中的任何位置注入 hotjar

确保在组件安装后使用它

componentDidMount() {
    hotjar.initialize('xxxxxxx', x);
  }
Run Code Online (Sandbox Code Playgroud)

如果您正在使用钩子,您可以在 useEffect 中执行,而无需任何依赖数组

const SampleComponent = () => {
  useEffect(() => {
    hotjar.initialize('xxxxxxx', x);
  }, [])
Run Code Online (Sandbox Code Playgroud)

确保在所有异步操作完成后加载 hotjar,以便它记录您想要的所有活动

async componentDidMount() {
        await load1();
        await load2();
        hotjar.initialize('xxxxxxx', x);
}
Run Code Online (Sandbox Code Playgroud)


Ahm*_*oud 4

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

如果您希望 Hotjar 跟踪哈希更改,那么您需要在设置中进行配置。

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

Hotjar 站点设置