如何使用Next Js useRouter从“next/navigation”中动态添加和删除查询参数?我需要在查询中添加过滤器,例如使用.../hotels?id=123&type=hotel添加filters=219,213我尝试路由器替换添加新的查询参数
.../hotels?id=123&type=hotel
filters=219,213
qij5mzcb1#
您需要使用useSearchParams和usePathname来获取query和pathname。如果您想更新现有的历史记录而不是添加新的历史记录,也可以使用router.replace。
useSearchParams
usePathname
query
pathname
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> ) }
1条答案
按热度按时间qij5mzcb1#
您需要使用
useSearchParams
和usePathname
来获取query
和pathname
。如果您想更新现有的历史记录而不是添加新的历史记录,也可以使用router.replace
。