redhare-demo/hooks/useChangeRoute.js

23 lines
626 B
JavaScript

import { useRouter, usePathname, useSearchParams } from 'next/navigation'
export default function useChangeRoute() {
const { replace } = useRouter()
const pathname = usePathname()
const searchParams = useSearchParams()
let query = {}
searchParams.forEach((value, key) => {
query[key] = value
})
const changeRoute = newQueries => {
const queryParams = new URLSearchParams()
Object.entries({ ...query, ...newQueries }).forEach(([key, value]) => {
if (value) queryParams.set(key, value)
})
replace(`${pathname}?${queryParams.toString()}`, { scroll: false })
}
return changeRoute
}