Adding Google Analytics to React

后端 未结 6 1537
别那么骄傲
别那么骄傲 2021-01-30 16:23

I am trying to add Google Analytics to a React Web Application.

I know how to do it in HTML/CSS/JS sites and I have integrated it in an AngularJS app too. But, I\'m not

相关标签:
6条回答
  • 2021-01-30 16:41

    Looking at google's site https://developers.google.com/analytics/devguides/collection/analyticsjs,

    you could also add Google Analytics using this function:

    const enableGA = () => {
      !function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){
      (A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),
      r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)
      }(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
    
      ga('create', 'UA-XXXXXXXX-X');
      ga('send', 'pageview');
    }
    

    This way you don't need an external library, and it's pretty quick to setup.

    0 讨论(0)
  • 2021-01-30 16:43

    Update: Feb 2019
    As I saw that this question is being searched a lot, I decided to expand my explanation.
    To add Google Analytics to React, I recommend using React-GA.
    Add by running:
    npm install react-ga --save

    Initialization:
    In a root component, initialize by running:

    import ReactGA from 'react-ga';
    ReactGA.initialize('Your Unique ID');
    

    To report page view:

    ReactGA.pageview(window.location.pathname + window.location.search);
    

    To report custom event:

    ReactGA.event({
      category: 'User',
      action: 'Sent message'
    });
    

    More instructions can be found in the github repo


    The best practice for this IMO is using react-ga. Have a look at the github rep

    0 讨论(0)
  • 2021-01-30 16:44

    One other great library that you can check is redux-beacon.

    It gets integrated very easily with react/redux application and has a great documentation for it. ReactGA is good too but with redux-beacon, you won't clutter your app code with google analytics code as it works via its own middleware.

    0 讨论(0)
  • 2021-01-30 16:48

    I suggest embedding the Segment script into your index.html, use the analytics library that is accessible on the window object, and add tracking calls onto React’s event handlers:

    export default class SignupButton extends Component {
      trackEvent() {
        window.analytics.track('User Signup');
      }
    
      render() {
        return (
          <button onClick={this.trackEvent}>
            Signup with Segment today!
          </button>
        );
      }
    }
    

    I’m the maintainer of https://github.com/segmentio/analytics-react. I recommend checking it out if you want to solve this problem by using one singular API to manage your customer data, and be able to integrate into any other analytics tool (we support over 250+ destinations) without writing any additional code.

    0 讨论(0)
  • 2021-01-30 16:49

    Without using a package this is how I would do it:

    In your index.js (in the render method):

        {/* Global site tag (gtag.js) - Google Analytics */}
        <script
          async
          src="https://www.googletagmanager.com/gtag/js?id=YOUR_TRACKING_ID"
        />
        <script>{injectGA()}</script>
    

    And outside the class:

    const injectGA = () => {
      if (typeof window == 'undefined') {
        return;
      }
      window.dataLayer = window.dataLayer || [];
      function gtag() {
        window.dataLayer.push(arguments);
      }
      gtag('js', new Date());
    
      gtag('config', 'YOUR_TRACKING_ID');
    };
    
    0 讨论(0)
  • 2021-01-30 16:49

    If you prefer not to use a package this is how it can work in a react application. Add the "gtag" in index.html

    <!-- index.html -->
    
    <script>
                window.dataLayer = window.dataLayer || [];
                function gtag() {
                    dataLayer.push(arguments);
                }
                gtag("js", new Date());
    
                gtag("config", "<GA-PROPERTYID>");
            </script>
    
    

    In the submit action of the login form, fire off the event

    window.gtag("event", "login", {
                event_category: "access",
                event_label: "login"
            });
    
    0 讨论(0)
提交回复
热议问题