Event Listener Added Multiple Times
After Cursor refactored your component code, event listeners are being attached multiple times. Clicking a button fires the handler multiple times, or scroll events fire excessively.
The useEffect cleanup or listener removal logic was broken.
Error Messages You Might See
Common Causes
- useEffect missing dependency array, adding listener on every render
- Cleanup function not removing listener
- Multiple components mounting, each adding same global listener
- Event delegation not used, multiple listeners for same event
- Component mounting twice in strict mode (React 18)
How to Fix It
useEffect with cleanup: useEffect(() => { window.addEventListener(...); return () => window.removeEventListener(...); }, []). Empty dependency array ensures once per mount. Use event delegation for many items. In dev, React 18 mounts twice intentionally.
Real developers can help you.
You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.
Get HelpFrequently Asked Questions
Why is my listener firing twice?
Missing cleanup function in useEffect. Or missing dependency array, adding listener on every render.
What's event delegation?
Add one listener to parent, check event.target. Better than adding listener to every child. Reduces memory.