jsxDirective
Stability:
experimental ⚠️ Experimental feature, use at your riskVue built-in directives for JSX.
| Directive | Vue 3 | Vue 2 | Volar |
|---|---|---|---|
v-if | ✅ | ✅ | ✅ |
v-else-if | ✅ | ✅ | ✅ |
v-else | ✅ | ✅ | ✅ |
v-for | ✅ | ✅ | ✅ |
v-on | ✅ | ✅ | ✅ |
v-slot | ✅ | ✅ | ✅ |
v-html | ✅ | ✅ | / |
v-once | ✅ | ❌ | / |
v-memo | ✅ | ❌ | / |
Usage
v-on
WARNING
v-on only supports binding to an object of event / listener pairs without an argument.
tsx
<form v-on={{ submit }} />v-if, v-else-if, v-else
tsx
<div v-if={foo === 0}>
<div v-if={foo === 0}>0-0</div>
<div v-else-if={foo === 1}>0-1</div>
<div v-else>0-2</div>
</div>v-for, v-memo
tsx
<div v-for={(item, index) in list} key={index} v-memo={[foo === item]}>
{item}
</div>v-slot
tsx
<Child>
default slot
<template v-slot:bottom={{ bar }}>
<span>{bar}</span>
</template>
</Child>Dynamic Arguments
It is also possible to use a JavaScript expression in a directive argument by wrapping it with a pair of $:
v-model
tsx
<Comp v-model:$name$={value} />v-slot
tsx
<Comp>
<template v-for={(Slot, slotName) in slots} v-slot:$slotName$={scope}>
<Slot {...scope} />
</template>
</Comp>Modifiers
Modifiers are special postfixes denoted by a _, which indicate that a directive should be bound in some special way.
tsx
<form onSubmit_prevent>
<input v-model_number={value} />
</form>Volar Configuration
jsonc
// tsconfig.json
{
"vueCompilerOptions": {
"target": 3,
"plugins": [
"@vue-macros/volar/jsx-directive",
// ...more feature
],
},
}