react-ga
不适用于 GA-4。我还要说,在react-ga
's issues 中,所有者说过除非有人创建 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”的加载失败</p>
...下面是他的代码的扩展,以使用ga4react.initialize()
返回的承诺。这样,您基本上可以检测脚本是否未加载,从而推断用户是否有阻止 GA 脚本加载的广告拦截器。在我的示例代码中,我只是忽略它并加载应用程序......在其他情况下,我想你可以调用一个模式来告诉他们禁用它(当然,这将带有额外的代码)。
通过添加
await ga4react.initialize()
到 src GA-4 中的 index.js 将启动并添加一个综合浏览量。也适用于 react-router,无需添加任何代码。通过 Promise(等待),您必须将其包装到异步函数中(下面作为闭包)。
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')
);
});
})();