A Controlled Component is one that takes its current value through props and notifies
changes through callbacks like onChange.
A Uncontrolled Component is one that stores its own state internally, and you query the
DOM using a ref to find its current value when you need it.