>
Next.jsのクライアントコンポーネントでURLが変わった時に検知する方法についてのメモです。初心者のメモなので参考程度にしてください。
"use client"
import React, { useEffect, useRef, useState } from "react"
import { usePathname } from "next/navigation"
export const MyComponent = () => {
const pathname = usePathname()
const pathnameRef = useRef<string>("")
useEffect(() => {
console.log("pathname", pathname)
if (pathnameRef.current !== "" &&
pathname !== pathnameRef.current) {
console.log("URLが変わりました。")
}
pathnameRef.current = pathname
}, [pathname])
// ...
}
この方法で、ハンバーガーメニューの中のリンクをクリックした時に、ハンバーガーメニューを閉じています(ハンバーガーメニューの中身は子コンポーネントのサーバーコンポーネントなのでonClickを使えない)。もっと良い方法があるかもしれませんが、とりあえずこれで凌いでいます。
関連記事