React is one of the most popular JavaScript libraries for building user interfaces, and at its core lie components. Components allow you to break your user interface into reusable, self-contained pieces. In this article, we’ll explore what React components are, how they work, and how you can start implementing them in your own projects. Whether you’re coming from a Boot Camp, Codecademy’s React courses or just getting started, this guide will help you build a solid foundation.
What Are React Components?
React components are the building blocks of a React application. Think of them as custom, reusable HTML elements that encapsulate their behavior and presentation. There are two primary types of components in React:
- Functional Components: These are JavaScript functions that return JSX. They are often simpler and easier to understand.
- Class Components: These use ES6 classes and provide additional features like lifecycle methods. However, with the advent of React Hooks, functional components have largely become the standard.
Why Use Components?
Components help you:
- Reuse code: Build UI elements once and reuse them throughout your application.
- Maintain separation of concerns: Each component handles a specific task, making your code easier to manage and debug.
- Improve scalability: As your application grows, components allow you to maintain an organized structure.
Building Your First Functional Component

Let’s create a simple Greeting component that displays a message. Open your favorite code editor (e.g., Visual Studio Code) and follow along.
Step 1: Setting Up
For this example, you can create a new React project using a tool like Create React App or Vite. Or visit “Up and Running With React” for a step-by-step guide to creating your first React App Once your project is ready, navigate to the src
folder.

Step 2: Creating the Greeting Component
Create a new file called Greeting.jsx
in your src
directory and add the following code:
// Greeting.jsx import React from 'react'; function Greeting({ name }) { return <h1>Hello, {name}! Welcome to React Components 101.</h1>; } export default Greeting;

What’s Happening Here?
- Importing React: This is necessary to use JSX.
- The Function:
Greeting
is a functional component. It accepts a single prop calledname
. - JSX Return: The function returns a heading element that uses curly braces
{}
to embed the JavaScript variablename
within the JSX. - Exporting: The component is exported so it can be imported and used in other parts of your application.
Integrating the Component into Your App
Now, let’s use the Greeting
component in your main App.jsx
file. Open or create App.jsx
in the src
directory and modify it as follows:
// App.jsx import React from 'react'; import Greeting from './Greeting'; import './App.css'; function App() { return ( <div className="App"> <Greeting name="Young Developer" /> </div> ); } export default App;


Explanation:
- Importing Greeting: We import our
Greeting
component. - Using the Component: By writing
<Greeting name="Young Developer" />
, we pass the propname
with the value"Young Developer"
. This replaces the{name}
inside our component with the provided value.
A More Practical Use Case: Interactive Counter
Let’s take it a step further by creating a component that uses state. We’ll build a simple counter component.
Step 1: Creating the Counter Component
Create a new file called Counter.jsx
in your src
directory:
// Counter.jsx import React, { useState } from 'react'; function Counter() { // Declare a state variable 'count' with an initial value of 0 const [count, setCount] = useState(0); // Function to increment the count const increment = () => { setCount(count + 1); }; return ( <div> <h2>Counter: {count}</h2> <button onClick={increment}>Increment</button> </div> ); } export default Counter;
What’s Happening Here?
- useState Hook: We import
useState
to add state to our functional component. - State Declaration: The
useState
hook returns an array containing the current state (count
) and a function to update it (setCount
). - Event Handling: We create an
increment
function that increases the count by 1 every time the button is clicked. - Rendering: The count is displayed, and the button’s
onClick
event is set to call theincrement
function.
Step 2: Updating the App to Use the Counter
Modify your App.jsx
to include the Counter
component:
// App.jsx import React from 'react'; import Greeting from './Greeting'; import Counter from './Counter'; import './App.css'; function App() { return ( <div className="App"> <Greeting name="Young Developer" /> <Counter /> </div> ); } export default App;
This new structure now combines a static greeting and an interactive counter, demonstrating how to mix and match components to build an engaging UI.


Best Practices for Working with Components
- Keep Components Small and Focused: Each component should ideally have a single responsibility.
- Use Props for Data Flow: Pass data from parent to child components using props.
- Embrace Reusability: Create generic components that can be reused in different parts of your app.
- Comment and Document: Especially as you learn, add comments to your code to explain what each part does.
- Test as You Go: Make frequent commits and test your components, ensuring they work as expected.
Practical Real-World Use Cases
- Navigation Bar: A component that renders a list of links.
- Form Elements: Components that encapsulate input fields, labels, and buttons.
- Dynamic Lists: Use components combined with array mapping to create item lists for tasks, messages, etc.
- Modals and Popups: Reusable components for dialogues and alerts.

Wrapping Up
Understanding and mastering React components is a cornerstone of becoming a proficient React developer. Start with small components, practice integrating them, and gradually move on to building complex UIs. With tools like Codecademy’s React courses and the official React documentation at your side, you’ll soon be on your way to creating robust, maintainable web applications.