Performance: Action update and destroy
MEDIUM IMPACT
This concept affects how efficiently DOM elements are updated and cleaned up, impacting interaction responsiveness and memory usage.
function myAction(node, params) { function handleClick() { console.log('clicked with', params); } node.addEventListener('click', handleClick); return { update(newParams) { params = newParams; }, destroy() { node.removeEventListener('click', handleClick); } }; }
function myAction(node) { node.addEventListener('click', () => console.log('clicked')); return { update(newParams) { // no cleanup of old listeners node.addEventListener('click', () => console.log('clicked with', newParams)); }, // no destroy method }; }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Adding new listeners on every update | Multiple event listeners added | No direct reflows but slows event handling | Minimal paint cost | [X] Bad |
| Single listener with update and destroy cleanup | One event listener reused | No reflows triggered | Minimal paint cost | [OK] Good |