当前位置: 首页 > 面试题库 >

如何在React中使用Google Analytics(分析)?

华凌
2023-03-14
问题内容

在我的react应用程序中,我有一些页面:

  1. 主要
  2. 服务
  3. 联系
  4. 个人资料(私人)
  5. 等等..

我需要跟踪用户使用Google Analytics(分析)的活动。我在react-ga上搜索了一下,一切都很好。但是,有了这个库,我必须在使用的每条路线上初始化我的GA。例如:

路线“ /”-主页:

class Main extends Component {

    componentDidMount() {
        initGA();
    }

    render() {
        return (
            <div>
                <Component1 />
                <Component2 />
            </div>
        )
    }
}

我的initGA()样子是:

import ReactGA from 'react-ga';

export const initGA = () => {
    ReactGA.initialize('UA-00000000-1');
    ReactGA.pageview(window.location.pathname + window.location.search);
    console.log(window.location.pathname + window.location.search);
}

我的App class样子是:

class App extends Component {
    render() {
        return (
            <BrowserRouter>
                <div className="App">

                    <Switch>
                        <Route exact path="/" component={Main} />
                        <Route exact path="/signup" component={SignupLayout} />
                        <Route component={PublicLayout} />
                    </Switch>

                </div>
            </BrowserRouter>
        );
    }
}

在使用方式上,react- gainitGA()在每个组件上添加了功能,这些功能会在路线响应中呈现。我认为initGA()在每个组件中重复都是不正确的。拜托,伙计们,您如何使用react- ga?什么是使用react-ga的正确方法?


问题答案:

要使其工作,需要使用Router功能。因此在App组件中import { Router } from 'react-router- dom'。它必须是路由器而不是BrowserRouter。

然后 import createHistory from 'history/createBrowserHistory'

const history = createHistory()
ReactGA.initialize('UA-000000-1');
history.listen((location, action) => {
    ReactGA.pageview(location.pathname + location.search);
    console.log(location.pathname)
});

此代码将在每次更改路线时触发!

比给路由器组件一个历史属性。

完整的代码:

import React, { Component } from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import createHistory from 'history/createBrowserHistory'
import Main from './components/pages/Main';
import ReactGA from 'react-ga';


const history = createHistory()
ReactGA.initialize('UA-00000000-1');
history.listen((location, action) => {
    ReactGA.pageview(location.pathname + location.search);
    console.log(location.pathname)
});

class App extends Component {

    render() {
        return (

            <Router history={history}>
                <div className="App">

                    <Switch>
                        <Route exact path="/" component={Main} />
                        <Route exact path="/signup" component={SignupLayout} />
                        <Route component={PublicLayout} />
                    </Switch>

                </div>
            </Router>
        );
    }
}

export default App;


 类似资料:
  • 问题内容: 当我卷曲东西时,它可以正常工作: 我如何使它与axios一起正常工作?如果这很重要,我正在使用react: 由于某些原因,这不起作用。 问题答案: 这是我如何使用axios在react中上传文件 资源

  • 问题内容: 我正在使用React 16,并且需要门户网站,但是无法找到有关此功能的任何文档。有人知道怎么使用吗? https://github.com/facebook/react/pull/10675 感谢您的任何建议。 问题答案: React v16刚刚发布了几个小时(正式版),正式支持。 什么是门户? 到现在已经有多久了? 门户网站提供了一种一流的方式来将子级呈现到父组件的DOM层次结构之外

  • 问题内容: 在React的官方文档中,它提到- 如果您熟悉React类的生命周期方法,则可以将useEffect Hook视为componentDidMount,componentDidUpdate和componentWillUnmount的组合。 我的问题是-我们如何在钩子中使用lifecyle方法? 问题答案: 你不能使用任何现有的生命周期方法(,,在钩等)。它们只能在类组件中使用。并且使用挂

  • 问题内容: 使用此样板作为参考,我创建了一个Electron应用程序。它使用webpack捆绑脚本并通过Express Server托管脚本。 的WebPack配置是实质上相同的这个和服务器这样。 Electron的脚本加载: 然后index.html加载服务器托管的脚本: 我运行以构建应用程序并启动服务器,该服务器使用webpack将脚本捆绑在一起。 它工作正常,我的React组件App已安装。

  • 问题内容: 我一直在阅读以下链接: https : //reactjs.org/docs/hooks-faq.html#how-do-i- implement-shouldcomponentupdate https://reactjs.org/blog/2018/10/23/react -v-16-6.html 在第一个链接中显示为(https://reactjs.org/docs/hooks-f

  • 问题内容: 如何在React中使用jQuery UI?我已经通过Googling看到了几个示例,但它们似乎都已过时。 问题答案: 如果您 确实 需要这样做,这是我正在使用的一种方法。 计划: 创建一个组件来管理jQuery插件 。该组件将提供以React为中心的jQuery组件视图。此外,它将: 使用React生命周期方法来初始化和拆除jQuery插件; 使用React 作为插件配置选项并连接到插