Skip to content

useRouteQuery

Category
Export Size
506 B
Package
@vueuse/router
Last Changed
4 weeks ago

Shorthand for a reactive route.query. Updates the URL query parameters when the ref changes. Available in the @vueuse/router add-on.

Usage

ts
import { 
useRouteQuery
} from '@vueuse/router'
const
search
=
useRouteQuery
('search')
const
search
=
useRouteQuery
('search', 'foo') // or with a default value
const
page
=
useRouteQuery
('page', '1', {
transform
:
Number
}) // or transforming value
console
.
log
(
search
.
value
) // route.query.search
search
.
value
= 'foobar' // router.replace({ query: { search: 'foobar' } })

By default, changes use router.replace(). Set mode: 'push' to use router.push() instead.

ts
import { 
useRouteQuery
} from '@vueuse/router'
const
search
=
useRouteQuery
('search', '', {
mode
: 'push' })

Bidirectional Transform

You can provide separate get and set transforms for reading and writing values.

ts
import { 
useRouteQuery
} from '@vueuse/router'
const
filters
=
useRouteQuery
('filters', [], {
transform
: {
get
:
v
=>
v
?
v
.split(',') : [],
set
:
v
=>
v
.join(','),
}, }) // Reading: 'a,b,c' -> ['a', 'b', 'c'] // Writing: ['a', 'b', 'c'] -> 'a,b,c'

Default Value Behavior

When the value equals the default value, the query parameter is removed from the URL.

ts
import { 
useRouteQuery
} from '@vueuse/router'
const
page
=
useRouteQuery
('page', '1')
page
.
value
= '2' // URL: ?page=2
page
.
value
= '1' // URL: (no page param, since it equals default)

Type Declarations

ts
export declare function 
useRouteQuery
(
name
: string,
):
Ref
<undefined | null | string | string[]>
export declare function
useRouteQuery
<
T
extends
RouteQueryValueRaw
=
RouteQueryValueRaw
,
K
=
T
,
>(
name
: string,
defaultValue
?:
MaybeRefOrGetter
<
T
>,
options
?:
ReactiveRouteOptionsWithTransform
<
T
,
K
>,
):
Ref
<
K
>

Source

SourceDocs

Contributors

Anthony Fu
Anthony Fu
Antério Vieira
Arthur Darkstone
IlyaL
alexchexes
Andrej Agapow
Stefan Vojvodic
Guillaume Chau
jack-allocate
Lindsay Gaines
Manoah Tervoort
Shean de Montigny-Desautels
Eduardo Wesley
wheat
Dvir Hazout
Curt Grimes
Sacha STAFYNIAK
reslear
Marshall Thompson

Changelog

v14.0.0-alpha.3 on
554b7 - fix: update return types for createTemplatePromise, useMagicKeys, use… (#4963)
v12.8.0 on
7432f - feat(types): deprecate MaybeRef and MaybeRefOrGetter in favor of Vue's native (#4636)
v12.3.0 on
bba3f - feat(router): support partial transform (#4426)
59f75 - feat(toValue): deprecate toValue from @vueuse/shared in favor of Vue's native
0cc45 - fix: differentiate undefined and null when writing value (#4382)
v12.1.0 on
23fdb - fix(useRouteParams,useRouteQuery): set route param/query to undefined when defaultValue is ref or getter (#3977)
v12.0.0-beta.1 on
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
v11.3.0 on
65aa0 - feat(router): transform get / set (#4326)
44772 - fix(useRouteParams, useRouteQuery): effect triggers twice with object getter as watch source (#4283)
v11.0.0-beta.3 on
965bf - fix(useRouteHash, useRouteParams, useRouteQuery): fix effect triggering multiple times (#4113)
v10.8.0 on
c44fe - fix(useRouteParams,useRouteQuery): set route param/query to undefined when null or defaultValue (#3583)
v10.6.0 on
771e7 - fix(useRouteQuery,useRouteParams): prevent reset on other scope dispose (#3418)
v10.3.0 on
0d02f - fix(router): improves router functions: synchronize values, adds tests, and optimize performance (#3184)

Released under the MIT License.

Ship Faster with AI Dev Workflows
Flagship advanced AI course is coming soon
Join Waitlist