| Controlled Components | Uncontrolled Components |
|---|---|
| They do not maintain their own state. | They maintain their own state. |
| Data is controlled by the parent component. | Data is controlled by the DOM |
| They take in the current values through props and then notify the changes via callbacks. | Refs are used to get their current values |