iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 21
0

介紹

Google Analytics 在 React常被使用到的就是 react-ga套件,通常會為了不要每一隻程式碼都加入Ga所以會把這個import到 layout, 這樣只要寫一次import 管理上會比較輕鬆

在Layout這隻程式碼中,可以看到在 componentDidMount中如果還沒有初始化過 !window.GA_INITIALIZED
就跑 initGA() 一次即可,接下來應為使用logPageView 告訴Ga 目前的路徑是哪邊,這樣就不需要每隻頁面都加入讓他動態抓取就可以了


import React from 'react'
import { initGA, logPageView } from '../utils/analytics'

export default class Layout extends React.Component {
  componentDidMount () {
    if (!window.GA_INITIALIZED) {
      initGA()
      window.GA_INITIALIZED = true
    }
    logPageView()
  }
  render () {
    return (
      <div>
        {this.props.children}
      </div>
    )
  }
}

設定 與 logPageView
設定就 給 initGA google 提供的申請的 GA 編號,logPageView部分會把當然 router.push改變的值告訴GA 這樣GA才能在後台幫忙分析



import ReactGA from 'react-ga'

export const initGA = () => {
  console.log('GA init')
  ReactGA.initialize('UA-xxxxxxxxx-1')
}

export const logPageView = () => {
  console.log(`Logging pageview for ${window.location.pathname}`)
  ReactGA.set({ page: window.location.pathname })
  ReactGA.pageview(window.location.pathname)
}

export const logEvent = (category = '', action = '') => {
  if (category && action) {
    ReactGA.event({ category, action })
  }
}

export const logException = (description = '', fatal = false) => {
  if (description) {
    ReactGA.exception({ description, fatal })
  }
}

總結

React-Ga套件超方便,所以在設定時候 直接寫到 Layout 不需要每一頁都砍入,再由 logPageView 去代理,把瀏覽頁面的資訊傳到GA

官方 github 範例

https://github.com/zeit/next.js/tree/canary/examples/with-react-ga


上一篇
Next.js & Socket.io
下一篇
Next.js & StoryBook (ㄧ)
系列文
Next.js + 各種套件組合30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言