14からどんどんstableになっていき使いやすくなり、アップデート作業もしやすくなってきました。
ブログを読むと、<Image>
を使わずgetImageProps()
というのがstableになってDarkモードとの切り替え方法が紹介されています。
ちょっとやってみたい気持ちもありましたが、既に実装されている部分に絞ってメンテナンスを進めていくのを優先したいので次回以降に持ち越すことにします。
今回機能が追加されたのはthird partyのGoogle Analyticsコンポネントです。
https://nextjs.org/blog/next-14-1#other-improvements
yarn add @next/third-parties/google
TheGoogleAnalytics
component can be used to include Google Analytics 4 to your page via the Google tag (gtag.js
). By default, it fetches the original scripts after hydration occurs on the page.
GoogleAnalytics
コンポネントは gtag.js
を介して Google Analytics 4 をページに含めるために使われます。
gtag.jsを手動でページに追加していたのを自動で処理できるようになったらしいです👀!!!!
よって、lib/gtag.js
はdelateです。
例:
import { GoogleAnalytics } from '@next/third-parties/google'
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body>{children}</body>
<GoogleAnalytics gaId="G-XYZ" />
</html>
)
}
全てのroutesで使う場合は、layout.tsx
の<body>タグ
の後に<GoogleAnalytics gaId="G-*****" />
を加えます。
gaId
の値はserver-constants.js
で設定しているNEXT_PUBLIC_GA_TRACKING_ID
の値を使っていつものようにシークレットにしときます。
const RootLayout = ({ children }: { children: React.ReactNode }) => (
<html lang="ja" prefix="og: https://ogp.me/ns#">
<body>
.
.
.
</body>
{NEXT_PUBLIC_GA_TRACKING_ID ? (
<GoogleAnalytics gaId={NEXT_PUBLIC_GA_TRACKING_ID} />
) : undefined}
</html>
)
記事下のSNSボタンを押した時に測定できるようになっていた<SocialButtons />
のClickイベントの部分をsendGAEvent
を使って書き換えます。
例:
sendGAEvent({
event: 'screen_view', // イベント名
app_name: 'myAppName', // イベントパラメータのキーと値
screen_name: 'Home' // イベントパラメータのキーと値
});
参照:
例を参考にしてイベント名とイベントパラメータのkeyとvalueを書くと以下のようになります。
<TwitterShareButton
url={url}
title={title}
beforeOnClick={() =>
sendGAEvent({
event: 'share',
method: 'twitter',
contentType: 'article',
itemId: id,
})
}
>
この他のSNSボタン(facebook, pocket, hatena)も書き換えます。
components/google-analytics.tsx
からimportして使っていた<GoogleAnalytics />
を削除していきます。
最後にcomponents/google-analytics.tsx自体を削除したら完成です✌(*^^*)
公式ブログや公式ドキュメントが読みやすくなり、
メンテナンスもしやすくなってきました。
プログラミング力が上がったというより、
読める英単語が増えてきた影響が大きい気がします。
分かりにくい部分や、実際やってみたら遭遇したエラーなどはChatGPTに相談して助けてもらいました。
以下はそのログですw
@typescript-eslint/no-var-require
はCommonJSのrequire
をES6+のimport
を奨励してる^
をつけてpushしてみるメンテナンスを始めて来月で1年になりますが、ChatGPTの解説を読んでいるうちにいろんな検討をつけれるようになりました。
素人なので間違えている部分もあるかもしれませんが、毎回精一杯格闘しているので充実しています。
Next.js14まではサブブログの方で投稿していましたが、今回以降のメンテの記録はこのブログに出していこうと思います。
やっと記事っぽく整理できるようになってきました。。。。
次回に続く…..
▼ この記事に興味があったら同じタグから関連記事をのぞいてみてね
RSSリーダーにatomのリンクを登録すると通知が行くよ🐌
https://herohoro.com/atom
やってみてね(*´ω`*)(*´ω`*)
フォロー大歓迎\(^o^)/
フォロー大歓迎\(^o^)/