Performance: Method handlers vs inline handlers
MEDIUM IMPACT
This affects how Vue processes event listeners and updates the DOM, impacting interaction responsiveness and rendering speed.
<template> <button @click="doSomething">Click me</button> </template> <script setup> function doSomething() { console.log('Clicked') } </script>
<template> <button @click="() => doSomething()">Click me</button> </template> <script setup> function doSomething() { console.log('Clicked') } </script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Inline handler (e.g., @click="() => doSomething()") | Multiple add/remove event listeners per render | 0 (no layout change) | Low paint cost but higher CPU for listener management | [X] Bad |
| Method handler (e.g., @click="doSomething") | Single event listener reused | 0 (no layout change) | Low paint cost and minimal CPU overhead | [OK] Good |