Performance: v-for with v-if precedence
MEDIUM IMPACT
This affects rendering speed and responsiveness by controlling how many DOM nodes Vue creates and updates during list rendering.
<li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li> <script setup> import { computed } from 'vue' const filteredItems = computed(() => items.filter(item => item.visible)) </script>
<li v-for="item in items" :key="item.id" v-if="item.visible">{{ item.name }}</li>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| v-for with v-if inside | Creates all nodes then removes some | N reflows for N items | High paint cost due to node removal | [X] Bad |
| v-for on pre-filtered list | Creates only needed nodes | Single reflow | Low paint cost | [OK] Good |