JS.VUE.V.SLOT.STYLE
Enforce 'v-slot' directive style
Rule Details
This rule enforces v-slot directive style which you should use shorthand or long form.
{'vue/v-slot-style': ['error']}
<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-slotwithout that argument. This is shorter than#defaultshorthand.
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"
{'vue/v-slot-style': ['error', '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
- Style guide - Directive shorthands (https://vuejs.org/style-guide/rules-strongly-recommended.html#directive-shorthands)