Skip to main content

What is the difference between useState and useRef?

Answer​

FeatureuseStateuseRef
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