Skip to content

useRouteQuery

类别
导出体积
506 B
依赖包
@vueuse/router
上次更改
3 months ago

响应式 route.query 的简写。当 ref 变化时会更新 URL 查询参数。 Available in the @vueuse/router add-on.

用法

ts
import { 
useRouteQuery
} from '@vueuse/router'
const
search
=
useRouteQuery
('search')
const
search
=
useRouteQuery
('search', 'foo') // 或者带有默认值
const
page
=
useRouteQuery
('page', '1', {
transform
:
Number
}) // 或者进行值转换
console
.
log
(
search
.
value
) // route.query.search
search
.
value
= 'foobar' // router.replace({ query: { search: 'foobar' } })

默认情况下,变更会使用 router.replace()。设置 mode: 'push' 可以改用 router.push()

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

Bidirectional Transform

你可以提供分别用于读取和写入值的 getset 转换函数。

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

Default Value Behavior

当值等于默认值时,查询参数会从 URL 中移除。

ts
import { 
useRouteQuery
} from '@vueuse/router'
const
page
=
useRouteQuery
('page', '1')
page
.
value
= '2' // URL: ?page=2
page
.
value
= '1' // URL: (无 page 参数,因为等于默认值)

类型声明

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
>

源码

源码文档

贡献者

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

更新日志

554b7 - fix: update return types for createTemplatePromise, useMagicKeys, use… (#4963)
7432f - feat(types): deprecate MaybeRef and MaybeRefOrGetter in favor of Vue's native (#4636)
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)
23fdb - fix(useRouteParams,useRouteQuery): set route param/query to undefined when defaultValue is ref or getter (#3977)
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
65aa0 - feat(router): transform get / set (#4326)
44772 - fix(useRouteParams, useRouteQuery): effect triggers twice with object getter as watch source (#4283)
965bf - fix(useRouteHash, useRouteParams, useRouteQuery): fix effect triggering multiple times (#4113)
c44fe - fix(useRouteParams,useRouteQuery): set route param/query to undefined when null or defaultValue (#3583)
771e7 - fix(useRouteQuery,useRouteParams): prevent reset on other scope dispose (#3418)