It has a corresponding element created in the DOM and is connected to that.
They are typically written as functions.
They are pure functions, meaning they always return the same output for the same input (props).
They are primarily used for rendering UI and do not handle logic related to state or lifecycle methods.
They are easier to test and maintain because of their simplicity.
They are typically written as classes (before React 16.8) or as functional components using hooks (after React 16.8).
They can manage state using this.state (in class components) or the useState hook (in functional components).
They can handle lifecycle methods (e.g., componentDidMount, componentDidUpdate) or use the useEffect hook in functional components.
They are used when the component needs to maintain or update data over time.