12345678910111213141516171819202122232425262728293031323334 |
- import { usePathname, useRouter, useSearchParams } from 'next/navigation'
- type UseTabSearchParamsOptions = {
- defaultTab: string
- routingBehavior?: 'push' | 'replace'
- searchParamName?: string
- }
- export const useTabSearchParams = ({
- defaultTab,
- routingBehavior = 'push',
- searchParamName = 'category',
- }: UseTabSearchParamsOptions) => {
- const router = useRouter()
- const pathName = usePathname()
- const searchParams = useSearchParams()
- const activeTab = searchParams.get(searchParamName) || defaultTab
- const setActiveTab = (newActiveTab: string) => {
- router[routingBehavior](`${pathName}?${searchParamName}=${newActiveTab}`)
- }
- return [activeTab, setActiveTab] as const
- }
|