Performance: v-memo for conditional memoization
MEDIUM IMPACT
Improves rendering speed by skipping updates to parts of the DOM when their dependencies haven't changed.
<template> <div v-memo="[someReactive.value]"> <p>{{ expensiveComputation }}</p> </div> </template> <script setup> import { computed, ref } from 'vue' const someReactive = ref(0) const expensiveComputation = computed(() => { // heavy calculation return someReactive.value * 1000 }) </script>
<template>
<div>
<p>{{ expensiveComputation }}</p>
</div>
</template>
<script setup>
import { computed, ref } from 'vue'
const someReactive = ref(0)
const expensiveComputation = computed(() => {
// heavy calculation
return someReactive.value * 1000
})
</script>| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Without v-memo | Updates every reactive change | Triggers reflow on each update | Higher paint cost due to frequent updates | [X] Bad |
| With v-memo | Updates only when dependencies change | Single reflow per dependency change | Lower paint cost by skipping unnecessary updates | [OK] Good |