Skip to content

useVModels

Category
Export Size
509 B
Last Changed
last week
Related

Shorthand for props v-model binding. Think it like toRefs(props) but changes will also trigger emit.

Usage

ts
import { 
useVModels
} from '@vueuse/core'
const
props
=
defineProps
({
foo
: string,
bar
: number,
}) const
emit
=
defineEmits
(['update:foo', 'update:bar'])
const {
foo
,
bar
} =
useVModels
(
props
,
emit
)

Options API

ts
import { 
useVModels
} from '@vueuse/core'
export default {
props
: {
foo
:
String
,
bar
:
Number
,
},
setup
(
props
, {
emit
}) {
const {
foo
,
bar
} =
useVModels
(
props
,
emit
)
console
.
log
(
foo
.
value
) // props.foo
foo
.
value
= 'foo' // emit('update:foo', 'foo')
}, }

Type Declarations

ts
/**
 * Shorthand for props v-model binding. Think like `toRefs(props)` but changes will also emit out.
 *
 * @see https://vueuse.org/useVModels
 * @param props
 * @param emit
 * @param options
 *
 * @__NO_SIDE_EFFECTS__
 */
export declare function 
useVModels
<
P
extends object,
Name
extends string>(
props
:
P
,
emit
?: (
name
:
Name
, ...
args
: any[]) => void,
options
?:
UseVModelOptions
<any, true>,
):
ToRefs
<
P
>
export declare function
useVModels
<
P
extends object,
Name
extends string>(
props
:
P
,
emit
?: (
name
:
Name
, ...
args
: any[]) => void,
options
?:
UseVModelOptions
<any, false>,
):
ToRefs
<
P
>

Source

SourceDocs

Contributors

Anthony Fu
SerKo
broBinChen
Mikhailov Nikita
Jelf
sondh0127
William T. Kirby
Alex Kozack
ordago
Emīls Gulbis

Changelog

v13.6.0 on
d32f8 - refactor: add @__NO_SIDE_EFFECTS__ annotations to all pure functions (#4907)
v12.0.0-beta.1 on
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
v10.5.0 on
51f01 - fix: type error with passive: true (#3362)

Released under the MIT License.

Build faster with AI
New Masterclass to help you leverage AI in your Vue workflow
Get Early Access