# vue/v-slot-style
enforce
v-slot
directive style
- ⚙️ This rule is included in all of
"plugin:vue/vue3-strongly-recommended"
,"plugin:vue/strongly-recommended"
,"plugin:vue/vue3-recommended"
and"plugin:vue/recommended"
. - 🔧 The
--fix
option on the command line (opens new window) can automatically fix some of the problems reported by this rule.
# 📖 Rule Details
This rule enforces v-slot
directive style which you should use shorthand or long form.
<template>
<!-- ✓ GOOD -->
<my-component v-slot="data">
{{data}}
</my-component>
<my-component>
<template #default>content</template>
<template #one>content</template>
<template #two>content</template>
</my-component>
<!-- ✗ BAD -->
<my-component #default="data">
{{data}}
</my-component>
<my-component>
<template v-slot>content</template>
<template v-slot:one>content</template>
<template v-slot:two>content</template>
</my-component>
</template>
# 🔧 Options
{
"vue/v-slot-style": ["error", {
"atComponent": "shorthand" | "longform" | "v-slot",
"default": "shorthand" | "longform" | "v-slot",
"named": "shorthand" | "longform",
}]
}
Name | Type | Default Value | Description |
---|---|---|---|
atComponent | "shorthand" | "longform" | "v-slot" | "v-slot" | The style for the default slot at custom components directly (E.g. <my-component v-slot=""> ). |
default | "shorthand" | "longform" | "v-slot" | "shorthand" | The style for the default slot at template wrappers (E.g. <template #default=""> ). |
named | "shorthand" | "longform" | "shorthand" | The style for named slots (E.g. <template #named=""> ). |
Each value means:
"shorthand"
... use#
shorthand. E.g.#default
,#named
, ..."longform"
... usev-slot:
directive notation. E.g.v-slot:default
,v-slot:named
, ..."v-slot"
... usev-slot
without that argument. This is shorter than#default
shorthand.
And a string option is supported to be consistent to similar vue/v-bind-style
and vue/v-on-style
.
["error", "longform"]
is same as["error", { atComponent: "longform", default: "longform", named: "longform" }]
.["error", "shorthand"]
is same as["error", { atComponent: "shorthand", default: "shorthand", named: "shorthand" }]
.
# "longform"
<template>
<!-- ✓ GOOD -->
<my-component v-slot:default="data">
{{data}}
</my-component>
<my-component>
<template v-slot:default>content</template>
<template v-slot:one>content</template>
<template v-slot:two>content</template>
</my-component>
<!-- ✗ BAD -->
<my-component v-slot="data">
{{data}}
</my-component>
<my-component>
<template #default>content</template>
<template #one>content</template>
<template #two>content</template>
</my-component>
</template>
# 📚 Further Reading
# 🚀 Version
This rule was introduced in eslint-plugin-vue v6.0.0