React useRef persists state between renders

🧠 How useRef keeps the previous state value in React In React, components re-render when state changes, but not everything is recreated on every render. useRef gives you a persistent container whose value survives across renders without causing re-renders. 🔑 Important rules to remember useState Triggers a re-render when updated Values are recalculated on every render useRef Persists the same object between renders Updating .current does not trigger a re-render useEffect Runs after the render is committed to the DOM Never runs during rendering 🔄 Step-by-step render lifecycle Initial render count = 0 prevCountRef.current = undefined UI renders: Now: 0 Before: undefined After render useEffect runs prevCountRef.current = 0 After clicking the button setCount(1) is called React schedules a re-render Component re-renders: count = 1 prevCountRef.current = 0 (previous value) UI displays: Now: 1 Before: 0 After this render useEffect runs again prevCountRef.current = 1 (stored for next render) 🧩 Why this works Because the effect runs after rendering, the ref is updated after the UI has already used the old value. This timing allows the ref to act as a “memory” of the previous render. 💡 Mental model State = causes renders Render = reads refs Effect = writes refs ⚠️ Why not use state for this? Using state to store the previous value would: Trigger another re-render Risk infinite render loops Add unnecessary complexity useRef avoids all of that ✅ Final takeaway useRef persists data across renders without re-rendering, and useEffect updates it after render — making it perfect for tracking previous values. #React #ReactJS #JavaScript #ReactHooks #useRef #useEffect #useState #FrontendDevelopment #WebDevelopment #SoftwareEngineering

To view or add a comment, sign in

Explore content categories