ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

thumbnail

Labels:  DevOps 投稿者:mori-dev

React.js/redux アプリでの Google Analytics のイベントトラッキングの設定

です。

React.js/redux アプリでの Google Analytics のイベントトラッキング用の設定を紹介します。

ライブラリ

以下のライブラリを用います。

他に開発用に Google Analytics Debugger を導入するとよいかもしれません。

実装

パターン1: 直接タグの属性として設定する

eventTracker のオプション attributePrefix を index.html で以下のように指定しています。こうすることで、接頭辞を ga- から data- に変更しています。ga- だと React.js が Warning: Unknown prop といったワーニングを出すからです。

ga(‘require’, ‘eventTracker’, {
attributePrefix: ‘data-‘,
});

もっともよくある設定の例です。

<NFloatingButton
className={className}
onClick={redirectToOrderPage}
data-on=”click”
data-event-category=”Request”
data-event-action=”Request”
data-event-label=””
>

onTouchTap をつけたタグの場合は、data-on=”click” ではなく data-on=”touchstart” と指定することで、動作します。

<NPrimaryButtonHalfWidth
styleName=”button”
onTouchTap={HogeAction}
label=”ほげほげ”
data-on=”touchstart”
data-event-category=”C1″
data-event-action=”A1″
data-event-label=”L1″
/>

touchstart に対応させるため、eventTracker のオプションを追加しています。

ga(‘require’, ‘eventTracker’, {
attributePrefix: ‘data-‘,
events: [‘click’, ‘touchstart’],
});

パターン2: アクションに対して設定する

一つの UI、たとえばボタンが、複数の用途で使われることがあります。その場合、その UI のタグに、直接 GA の属性を指定するわけにはゆきません。redux-beacon を使うことで、React.js のアクションに、GA の指定を対応づけることができます。

GA_FOO というアクションに対し、GA のカテゴリ C1、GA のアクション A1、GA のラベル L1 を対応づけてみましょう。

まずはアクションを定義します。

import * as ActionTypes from ‘./action_types’;
import { createAction } from ‘redux-actions’;

export const gaFoo = createAction(ActionTypes.GA_FOO);

ミドルウェアを書きます。

あとは、他のミドルウェアと同様に、この googleAnalytics ミドルウェアを applyMiddleware() して createStore() します。

結果の閲覧

Google アナリティクス の Web サイトの以下のページから、結果を閲覧できます。

  • リアルタイムデータ: リアルタイム > イベント
  • 過去データ: 行動 > イベント

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

thumbnail
あなたの世界

こんにちは、ランサーズのエンジニアのameshoです。 開発をしていると、隣の人と特定のコマンドなどについて話し込んだりしますよね。 この間、agやdiffについて話していて、 The Silver Searcher agってコマンドがあって乱暴に説明するとg …

PHP, CakePHPバージョンアップに向けてCIで品質を担保・向上していく

こんにちは、エンジニアの上野です。 今回はソース例や実際のサンプルソースを交えながら 「PHPバージョンアップに向けてCIで品質を担保・向上していく」と題してlancers.jp本体に導入しているCircleCIでの取り組みについてご紹介します。 導入背景 P …

thumbnail
みんなの使ってるキーボード調べてみた

はじめまして、最近ノートPCからバックスペースキーがポロリしてしまい、PCごと交換してもらった@nanapです。 ところでみんなどんなキーボードで開発してるんだっけ、ということで調べてみました。 リモートワークを行っていたりPCをしまっている人もいるので全員分 …