javascript - HashRouter 和 Google Analytics 无法跟踪单个路径
问题描述
我已经尝试了各种解决方案,我目前正在使用它,不幸的是 GA 只跟踪一个路径('/')
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import '../sass/main.scss';
import {
HashRouter,
Route,
Switch,
} from 'react-router-dom';
const history = createHistory()
ReactGA.initialize('UA-XXXXXXX-1');
history.listen((location, action) => {
ReactGA.pageview(location.pathname + location.search);
console.log(location.pathname)
});
class Index extends Component {
render() {
return (
<>
<HashRouter history={history} >
<Route />
<ScrollUpButton ContainerClassName="AnyClassForContainer" />
<Header />
<Switch history={history}>
<Route exact path={"/"} component={() => <HomePage />}/>
<Route exact path={"/test"} component={() => <CategoryLinksNextPrev />}/>
<Route exact path={"/contact"} component={() => <Contact />}/>
<Route exact path={"/car/:category/"} component={CarCategory} />
<Route exact path={"/car/:category/:carname"} component={CarOnePageMain} />
<Route path="*" component={NotFound} />
</Switch>
<Footer />
</HashRouter>
</>
)
}
}
ReactDOM.render(<Index />, document.getElementById("index"));
在谷歌分析中,它只显示一个子页面,并且正好指向 index.html
更新
我找到了一个非常简单的解决这个问题的方法。 https://www.npmjs.com/package/react-router-ga
这就是我现在的代码:
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import '../sass/main.scss';
import {
HashRouter,
Route,
Switch,
} from 'react-router-dom';
import Analytics from 'react-router-ga';
class Index extends Component {
render() {
return (
<>
<HashRouter >
<Analytics id="UA-xxxxxxx-1" debug>
<ScrollUpButton ContainerClassName="AnyClassForContainer" />
<Header />
<Switch history={history}>
<Route exact path={"/"} component={() => <HomePage />}/>
<Route exact path={"/test"} component={() => <CategoryLinksNextPrev />}/>
<Route exact path={"/contact"} component={() => <Contact />}/>
<Route exact path={"/car/:category/"} component={CarCategory} />
<Route exact path={"/car/:category/:carname"} component={CarOnePageMain} />
<Route path="*" component={NotFound} />
</Switch>
<Footer />
</Analytics>
</HashRouter>
</>
)
}
}
ReactDOM.render(<Index />, document.getElementById("index"));
解决方案
我最近有一个类似的问题。
看起来 Google Analytics 在页面加载时加载。如果您单击一个链接,GA 将再次运行,因为新页面使用新 URL 从头开始加载。
当用户在您的单页应用程序中移动时,您必须手动触发 GA 页面视图。
更多信息在这里 - https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications
推荐阅读
- amazon-web-services - 如何连接 AWS 账户
- native-base - 本机基础标签 - 知道如何删除标签周围的边框吗?
- react-native - Reactnative TypeError 中未显示特定页面的 Json 数据:
- r - R 中的 plotly 包如何从没有人脸信息的顶点信息创建实体 3D 网格
- php - 如何从指定文件夹中获取多个单独的旋转随机图像
- android - 在回收站视图中,如何确定单击的单选按钮来自 Android 中的同一个单选组
- .net-core - OData 日期过滤器返回损坏的 json
- java - 如何读取资源文件夹中的文件
- regex - 如何通过正则表达式从头到尾搜索字符串
- scala - 为什么 Java HashMap put 在 Spark Scala 中不起作用?