
<script
async
src={`https://www.googletagmanager.com/gtag/js?id=${process.env.GOOGLE_ANALYTICS}`}
/>
<script
dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${process.env.GOOGLE_ANALYTICS}', {
page_path: window.location.pathname,
});
`,
}}
/>
module.exports = {
env: {
KAKAO_KEY: process.env.KAKAO_KEY,
GOOGLE_ANALYTICS: process.env.GOOGLE_ANALYTICS,
}
};
export const getId = (id) => {
window.gtag(
"get",
process.env.GOOGLE_ANALYTICS,
"session_id",
(session_id) => {
id = session_id;
}
);
};
window.gtag(
"get",
process.env.GOOGLE_ANALYTICS,
"session_id",
(session_id) => {
setSessionId(session_id);
}
);
-각 페이지에서 setState 을 하기 이전에 app.js 에서 zustand 를 이용해 session_id 를 저장하고 가져와 쓰게끔 하려고 했으나, session 이 만료되었을 시, 페이지가 로드가 되면 이전에 가지고 있던 값을 한번 가져오고, 바뀐 session_id 를 다시 찍어 event_type = "view" 로그가 두번 찍히는 현상이 발견되어 위와 같이 일일히 setState 을 해주고, sessionId state 이 undefined 가 아닐때만 로그를 보내는 함수를 호출 하게끔 했다.