This function returns a new query string without triggering navigation.
| Parameter | Type | Required | Description |
|---|---|---|---|
| updates | Record<string, string | number | undefined | null> | Yes | An object containing your query updates. It generates a query string while preserving existing parameters. |
| options | SetOptions | No | See below |
SetOptions parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| reset | boolean | No | Default value is false. If true resets all search parameters. Removes existing search params and adds new parameters from the updates object. |
"use client"import { useSearchQuery } from 'use-search-query'import { usePathname, useRouter } from 'next/navigation'import { useState } from 'react'export default function Page() {const pathname = usePathname()const router = useRouter()const { setSearchParams } = useSearchQuery()const [searchTerm, setSearchTerm] = useState<string>('')const [page, setPage] = useState<number>(1)return (<div><inputplaceholder="Search a name..."onChange={((e) => {setSearchTerm(e.target.value)})}/><buttononClick={routeToPage}>Search</button><buttononClick={() => {// Updates a single value without affecting other existing search params. Here, only the page number changes; the searchTerm remains the same.const newSearchQuery = setSearchParams({ page: page - 1 })router.replace(`${pathname}?${newSearchQuery}`)setPage((prev) => prev - 1)}}>Previous Page</button><buttononClick={() => {// Updates a single value without affecting other existing search params. Here, only the page number changes; the searchTerm remains the same.const newSearchQuery = setSearchParams({ page: page + 1 })router.replace(`${pathname}?${newSearchQuery}`)setPage((prev) => prev + 1)}}>Next Page</button><buttononClick={() => {// Resets all search parameters. Removes existing search params and adding new parameters from the updates object.const newSearchQuery = setSearchParams({}, { reset: true })router.replace(`${pathname}?${newSearchQuery}`)}}>Reset Filters</button></div>)function routeToPage() {// Removes page parameter from search params.setPage(1)const newSearchQuery = setSearchParams({ term: serachTerm, page: undefined })router.replace(`${pathname}?${newSearchQuery}`)}}