我正在尝试集成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)} />
答案 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)