Skip to content

vue/no-template-shadow

disallow variable declarations from shadowing variables declared in the outer scope

  • ⚙️ This rule is included in all of "plugin:vue/strongly-recommended", *.configs["flat/strongly-recommended"], "plugin:vue/vue2-strongly-recommended", *.configs["flat/vue2-strongly-recommended"], "plugin:vue/recommended", *.configs["flat/recommended"], "plugin:vue/vue2-recommended" and *.configs["flat/vue2-recommended"].

no-template-shadow should report variable definitions of v-for directives or scope attributes if they shadow the variables in parent scopes.

📖 Rule Details

This rule aims to eliminate shadowed variable declarations of v-for directives or scope attributes.

<template> <!-- ✓ GOOD --> <div v-for="i in 5"></div> <div v-for="j in 5"></div> <!-- ✗ BAD --> <div> <div v-for="k in 5"> <div v-for="k in 10"></div> <div slot-scope="{ k }"></div> </div> </div> <div v-for="l in 5"></div> </template> <script> export default { data() { return { l: false } } } </script>
Now loading...

🔧 Options

This rule takes one optional object option, with the property "allow".

json
{
  "vue/no-template-shadow": ["error", { "allow": [] }]
}
  • "allow" ([string]) Array of identifier names for which shadowing is allowed.

Examples of correct code for the { "allow": ["i"] } option:

<template> <div v-for="i in 5"></div> </template> <script> export default { data() { return { i: 'some value' } } } </script>
Now loading...

🚀 Version

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

🔍 Implementation