What is the difference between useState and useRef?
Answer
| Feature | useState | useRef |
|---|---|---|
| Triggers re-render | ✅ | ❌ |
| Persists between renders | ✅ | ✅ |
| Access DOM elements | ❌ | ✅ |
| Mutable | ❌ (use setter) | ✅ (.current) |
useState Example
function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>Count: {count}</button>;
}
useRef Example
function TextInput() {
const inputRef = useRef(null);
const focusInput = () => {
inputRef.current.focus();
};
return <input ref={inputRef} />;
}
When to Use
- useState: UI state that should trigger re-renders
- useRef: DOM references or mutable values that shouldn't trigger re-renders