In React, everything you build are components. Imagine a component as a LEGO brick; by combining components together, you get a complete UI. A button can be a component, an input field can be another component.
Each component contains its own HTML, CSS, and JavaScript, so it is independent of other components. This includes methods to run when the component is first rendered on-screen, and methods to run when it is removed from view (collectively, these are called lifecycle methods).
Components can be combined to form new components. For example, we can take two HobnobInput components, add an HobnobButton component, and then wrap them inside a <form> element, and call that the HobnobForm component.
Every React application has a single root component, and you mount child components (which can have their own child components) into the root component. In the end, you build up a tree of components, similar to the DOM tree.