react-ga
不适用于 GA-4。我还要说,inreact-ga
的问题,楼主说过除非有人创建PR,否则他不打算添加GA-4支持。该项目也没有得到很好的维护。
理论上,您可以在 GA 管理仪表板中创建一个通用属性,以便与早期 GA 版本向后兼容。那时,您可以使用react-ga
,但最好的办法是ga-4-react
改用:https : //github.com/unrealmanu/ga-4-react
npm i ga-4-react
...
我会补充@TG___的答案。他在回答中提供的代码是一个好的开始,但我要提到的是,如果有人有广告拦截器(广告拦截器会阻止分析请求端点,没有错误处理等),它通常会使应用程序崩溃。
错误:使用源“https://www.google-analytics.com/analytics.js”加载失败
... 下面是他的代码的扩展,以使用ga4react.initialize()
返回的Promise。这样,您基本上可以检测脚本是否未加载,从而推导出用户是否有阻止 GA 脚本加载的广告拦截器。在我的示例代码中,我只是忽略它并加载应用程序......在其他情况下,我想你可以调用一个模式来告诉他们禁用它(当然,这会带来额外的代码)。
通过添加
await ga4react.initialize()
到您在 src GA-4 中的 index.js 将启动并添加一个综合浏览量。也适用于 react-router,无需添加任何代码。通过 Promise (await) 你必须把它包装成一个异步函数(下面是一个闭包)。
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
const ga4react = new GA4React("G-XXXXXXXXXX");
(async _ => {
await ga4react.initialize()
.then(res => console.log("Analytics Success."))
.catch(err => console.log("Analytics Failure."))
.finally(() => {
ReactDOM.render(
<React.StrictMode>
<Router>
<App />
</Router>
</React.StrictMode>,
document.getElementById('root')
);
});
})();