javascript 下一个Js 13路由

mcvgt66p  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(96)

如何使用Next Js useRouter从“next/navigation”中动态添加和删除查询参数?我需要在查询中添加过滤器,例如使用.../hotels?id=123&type=hotel添加filters=219,213
我尝试路由器替换添加新的查询参数

qij5mzcb

qij5mzcb1#

您需要使用useSearchParamsusePathname来获取querypathname。如果您想更新现有的历史记录而不是添加新的历史记录,也可以使用router.replace

'use client'

import { usePathname, useRouter, useSearchParams } from 'next/navigation'

export default function Page() {
  const pathname = usePathname()
  const searchParams = useSearchParams()
  const router = useRouter()

  const updateQuery = () => {
    const newUrlParams = new URLSearchParams(searchParams.toString())
    newUrlParams.set('filters', ['219', '213'].join(','))
    router.push(`${pathname}?${newUrlParams}`)
  }

  return (
    <div>
      <button onClick={updateQuery}>Update filter</button>
    </div>
  )
}

相关问题