# 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>
Now loading...

# 🔧 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" ... use v-slot: directive notation. E.g. v-slot:default, v-slot:named, ...
  • "v-slot" ... use v-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>
Now loading...

# 📚 Further Reading

# 🚀 Version

This rule was introduced in eslint-plugin-vue v6.0.0

# 🔍 Implementation