29 lines
979 B
TypeScript
29 lines
979 B
TypeScript
"use client"
|
|
|
|
import { usePathname, useSearchParams } from "next/navigation"
|
|
import { useEffect, useState } from "react"
|
|
|
|
/*** This hook is used to get the current pathname (as reflected in window.location.href) of the page. During ssr, the value from usePathname()
|
|
* is the value return from NextResponse.rewrite() (e.g. the path from the app directory) instead of the actual pathname from the URL.
|
|
*/
|
|
export function useLazyPathname({ includeSearchParams = false } = {}) {
|
|
const pathName = usePathname()
|
|
const searchParams = useSearchParams()
|
|
|
|
const [updatedPathName, setUpdatedPathName] = useState<string | null>(null)
|
|
|
|
useEffect(() => {
|
|
if (!includeSearchParams) {
|
|
setUpdatedPathName(pathName)
|
|
} else {
|
|
const updatedPathname = searchParams.size
|
|
? `${pathName}?${searchParams.toString()}`
|
|
: pathName
|
|
|
|
setUpdatedPathName(updatedPathname)
|
|
}
|
|
}, [pathName, searchParams, includeSearchParams])
|
|
|
|
return updatedPathName
|
|
}
|