Skip to content

useRouteQuery

类别
导出大小
506 B
@vueuse/router
最近修改
2 days ago

响应式 route.query 的简写。当 ref 变化时更新 URL 查询参数。

🌐 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' } })

🌐 Navigation Mode

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

🌐 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

你可以为读取和写入值提供单独的 getset 转换。

🌐 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

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

🌐 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)