EasyReact Fundamentals📖 Theory Question

What is the difference between a controlled and uncontrolled component?

💡

Hint

Controlled = React owns the value; uncontrolled = DOM owns it (accessed via ref)

Full Answer

Controlled component — React state is the single source of truth. Every change goes through setState.

Uncontrolled component — the DOM stores the value. You pull it with a ref when needed.

// Controlled — React owns the value
function Controlled() {
  const [value, setValue] = useState('');
  return (
     setValue(e.target.value)}
    />
  );
}

// Uncontrolled — DOM owns the value
function Uncontrolled() {
  const inputRef = useRef(null);
  function handleSubmit() {
    console.log(inputRef.current.value); // pull on demand
  }
  return ;
}

When to use each:

  • Controlled — instant validation, conditional disabling, dynamic inputs, format-on-type
  • Uncontrolled — file inputs (always uncontrolled), integrating with non-React code, simple one-off forms where you only need value on submit
💡 React recommends controlled components for most cases. File inputs (<input type="file">) are always uncontrolled — you can't set their value programmatically for security reasons.

More React Fundamentals Questions

EasyWhat is React and what problem does it solve?EasyWhat is JSX and how does it work under the hood?EasyWhat is the Virtual DOM and how does reconciliation work?EasyWhat are props and how is prop drilling a problem?

Practice this in a timed sprint →

5 free questions, no signup required

⚡ Start Sprint