@@ -77,7 +77,7 @@ export const useHref = (to: () => string | undefined) => {
7777export const useNavigate = ( ) => useRouter ( ) . navigatorFactory ( ) ;
7878export const useLocation = < S = unknown > ( ) => useRouter ( ) . location as Location < S > ;
7979export const useIsRouting = ( ) => useRouter ( ) . isRouting ;
80- export const usePreloadRoute = ( ) => useRouter ( ) . preloadRoute
80+ export const usePreloadRoute = ( ) => useRouter ( ) . preloadRoute ;
8181
8282export const useMatch = < S extends string > ( path : ( ) => S , matchFilters ?: MatchFilters < S > ) => {
8383 const location = useLocation ( ) ;
@@ -103,9 +103,7 @@ export const useSearchParams = <T extends Params>(): [
103103 const location = useLocation ( ) ;
104104 const navigate = useNavigate ( ) ;
105105 const setSearchParams = ( params : SetParams , options ?: Partial < NavigateOptions > ) => {
106- const searchString = untrack (
107- ( ) => location . pathname + mergeSearchString ( location . search , params ) + location . hash
108- ) ;
106+ const searchString = untrack ( ( ) => mergeSearchString ( location . search , params ) + location . hash ) ;
109107 navigate ( searchString , {
110108 scroll : false ,
111109 resolve : false ,
@@ -403,19 +401,22 @@ export function createRouterContext(
403401 return ;
404402 }
405403
404+ const queryOnly = to [ 0 ] === "?" ;
406405 const {
407406 replace,
408407 resolve,
409408 scroll,
410409 state : nextState
411410 } = {
412411 replace : false ,
413- resolve : true ,
412+ resolve : ! queryOnly ,
414413 scroll : true ,
415414 ...options
416415 } ;
417416
418- const resolvedTo = resolve ? route . resolvePath ( to ) : resolvePath ( "" , to ) ;
417+ const resolvedTo = resolve
418+ ? route . resolvePath ( to )
419+ : resolvePath ( ( queryOnly && source ( ) . rawPath ) || "" , to ) ;
419420
420421 if ( resolvedTo === undefined ) {
421422 throw new Error ( `Path '${ to } ' is not a routable path` ) ;
0 commit comments