http://localhost:3000/?search=test&type=abc&category=xyz
Después de buscar prueba (junto con el tipo y la categoría), la URL cambia a la URL anterior.
return router.push( { pathname: `/`, query: { // something to do here... }, }, "", { scroll: false } ); A continuación, tengo un onClick con este router.push .
Me gustaría eliminar SOLO la consulta de búsqueda y mantener las consultas de tipo y categoría . ¿Como es posible? La documentación no menciona nada al respecto.
Puede llamar a router.push con la cadena de consulta actual, pero omitiendo el parámetro de search .
const params = new URLSearchParams(router.query); params.delete('search'); const queryString = params.toString(); const path = `/${queryString ? `?${queryString}` : ''}`; router.push(path, '', { scroll: false }); Dado que actualmente se encuentra en /?search=test&type=abc&category=xyz , lo anterior lo redirigirá a /?type=abc&category=xyz . Esto también manejará escenarios donde los parámetros de consulta de type y category no están presentes.
let consultas = Object.assign({}, router.query);
delete queries.search; return router.push( { pathname: `/`, query: queries }, "", { scroll: false } );Para eliminar el parámetro de consulta por completo de la URL:
const { paramToRemove, ...routerQuery } = router.query; router.replace({ query: { ...routerQuery }, });