[React] react 使用 Google Analytics - 追蹤 button、select

react 使用 Google Analytics (以下簡稱GA),
你也可以不使用套件,直接使用GA上提供的「全域網站代碼(gtag.js)」




1.安裝 GA 套件
2.初始化 GA
3.將 url 加入 GA
4.將 button 加入 GA
5.將 select 加入 GA
6.將其寫成 component 置於 src/index.js


1.安裝 GA 套件
npm i react-ga4


2.初始化 GA
import ReactGA from 'react-ga4'
ReactGA.initialize('G-XXXXXXXXXX')	//你的GA評估ID


3.將 url 加入 GA
ReactGA.send('https://www.xxx.xxx')	//你要偵測的URL

理論上加完,並執行該網頁,就會在GA平台上看到如下的狀況




4.將 button 加入 GA
const gaEventTrack = () => {
  // body 外無 hasAttribute 方法,避免錯誤
  const body = document.querySelector('body');

  body.addEventListener('click', (e) => {
    let target = e.target;

    // 查找元素不包含 data-ga-action,且到 BODY 後跳出
    while(target.hasAttribute('data-ga-action') === false && target.tagName !== 'BODY'){
      // 父元素覆寫當下元素
      target = target.parentNode;
    }

    if(target.hasAttribute('data-ga-action')){
      const dataGaCategory = target.getAttribute('data-ga-category'); // 分類:網站頁面
      const dataGaAction = target.getAttribute('data-ga-action');     // 事件:功能名稱
      ReactGA.event({
        category: dataGaCategory,
        action: dataGaAction,
      });

      return false;
    }
  }, false);
};

useEffect(() => {
  gaEventTrack();
}, []);


5.將 select 加入 GA
const gaEventTrack = () => {
  ...
  4. button
  ...
  
  // select 專用
  body.addEventListener('change', (e) => {
    let target = e.target;

    // checkbox 跳出
    if(target.tagName === 'INPUT') return;
    
    // 查找元素不包含 data-ga-action,且到 BODY 後跳出
    while(target.hasAttribute('data-ga-category') === false && target.tagName !== 'BODY'){
      // 父元素覆寫當下元素
      target = target.parentNode;
    }

    if(target.hasAttribute('data-ga-category')){
      const dataGaCategory = target.getAttribute('data-ga-category'); // 分類:網站頁面    
      const dataGaAction = target.value;  // 事件:功能名稱(取得 option name)
      ReactGA.event({
        category: dataGaCategory,
        action: dataGaAction,
      });
    }
  }, false);
  
  ...
  4. useEffect()
  ...
};


6.將其寫成 component 置於 src/index.js
const GATracker = () => {
  const gaEventTrack = () => {
  	... 4. button
    ... 5. select
    ... 4. userEffect()
  };
}

const Main = () => (
  ...
  <GATracker/>
  ...
);





留言

這個網誌中的熱門文章

[日文] Google日文輸入法 簡單安裝說明

[面試] 日月光 設備工程師

[Windows] 還我 win7 相片檢視器!!