The Problem
You want to log something inside useEffect, but logger changes every render, causing the effect to re-run unnecessarily.
useEffect(() => {
const connection = createConnection();
connection.connect();
// We just want to log, not re-connect!
logger.log('Connected');
return () => connection.disconnect();
}, [logger]); // ❌ Re-connects every time logger changes
The useEvent Solution (React 19)
useEvent wraps a function so it is stable (doesn't change identity) but always sees the latest props/state.
const onConnected = useEvent(() => {
logger.log('Connected');
});
useEffect(() => {
const connection = createConnection();
connection.connect();
onConnected(); // ✅ Safe to call, not a dependency!
return () => connection.disconnect();
}, []); // ✅ No dependencies needed
Sponsored Content
Google AdSense Placeholder
CONTENT SLOT