vue/no-use-v-if-with-v-for
disallow using
v-if
on the same element asv-for
- ⚙️ This rule is included in all of
"plugin:vue/vue3-essential"
,*.configs["flat/essential"]
,"plugin:vue/essential"
,*.configs["flat/vue2-essential"]
,"plugin:vue/vue3-strongly-recommended"
,*.configs["flat/strongly-recommended"]
,"plugin:vue/strongly-recommended"
,*.configs["flat/vue2-strongly-recommended"]
,"plugin:vue/vue3-recommended"
,*.configs["flat/recommended"]
,"plugin:vue/recommended"
and*.configs["flat/vue2-recommended"]
.
📖 Rule Details
This rule is aimed at preventing the use of v-for
directives together with v-if
directives on the same element.
There are two common cases where this can be tempting:
- To filter items in a list (e.g.
v-for="user in users" v-if="user.isActive"
). In these cases, replaceusers
with a new computed property that returns your filtered list (e.g.activeUsers
). - To avoid rendering a list if it should be hidden (e.g.
v-for="user in users" v-if="shouldShowUsers"
). In these cases, move thev-if
to a container element (e.g.ul
,ol
).
🔧 Options
json
{
"vue/no-use-v-if-with-v-for": ["error", {
"allowUsingIterationVar": false
}]
}
allowUsingIterationVar
(boolean
) ... Enables Thev-if
directive use the reference which is to the variables which are defined by thev-for
directives. Default isfalse
.
"allowUsingIterationVar": true
👫 Related Rules
📚 Further Reading
- Style guide - Avoid v-if with v-for
- Guide - Conditional Rendering / v-if with v-for
- Guide - List Rendering / v-for with v-if
🚀 Version
This rule was introduced in eslint-plugin-vue v4.6.0