useRef
Subject: React
π What is useRef?
useRef is a React Hook that creates a mutable reference β an object that holds a .current property. This reference:
- Persists across renders
 - Does not trigger a re-render when updated
 
π§  When to Use useRef
π§ Common use cases:
- Accessing DOM elements (e.g., focus input)
 - Storing mutable values (e.g., timers, previous values)
 - Tracking values without re-renders
 
π¦ Syntax
| Part | Meaning | 
|---|---|
useRef() | Returns an object with .current | 
.current | Holds the value you want to persist | 
| No re-render | Updating .current does not trigger re-renders | 
β
 1. Accessing DOM Elements with useRef
π Logic:
useRef(null)creates a referenceref={inputRef}attaches it to<input>.current.focus()focuses the input on button click
β This is the React-safe way to access DOM nodes.
β 2. Storing Mutable Values (Without Re-rendering)
π Logic:
- Tracks render count without causing re-render
 - Ideal for logging/debugging render frequency
 
β 3. Hold Previous Value
π Logic:
- Saves previous state value for comparison/display
 .currentacts like a persistent memory box
π useRef Behavior Summary
| Property | Behavior | 
|---|---|
.current | Holds reference value | 
| Persistence | Value preserved across re-renders | 
| Re-render? | β Changing .current does not trigger re-render | 
| DOM access | β Can access native HTML elements | 
| JSX usage | Attach via ref={myRef} | 
π Common Use Cases
| Use Case | Example | 
|---|---|
| Input focus control | Focus when component mounts | 
| Scroll to element | Scroll a div into view | 
| Countdown timer ID | Store timer ID in .current | 
| Save previous state | Track old value of state or props | 
| Skip first render | Track first load to prevent initial effect | 
β οΈ Doβs and Donβts
| β Do | β Donβt | 
|---|---|
| Use for DOM access | Donβt use like state | 
| Use for values between renders | Donβt update expecting re-render | 
| Use to track things silently | Donβt use for UI-driven state changes | 
π Summary Table
| Feature | Description | 
|---|---|
useRef() | Hook to store values without triggering re-render | 
.current | Mutable value that persists between renders | 
| DOM Access | Attach via ref={...} to manipulate DOM elements | 
| Non-UI Storage | Store timers, counters, previous values, or any reference | 
Advertisement Slot 1
Advertisement Slot 2