DEV Community

Cover image for How To Use Props In React JS
Udemezue John
Udemezue John

Posted on

How To Use Props In React JS

Introduction.

React is all about building reusable components, and props (short for "properties") are a big part of that.

If you've ever worked with React, you've probably seen props being passed around between components. But how do they actually work, and why are they so important?

Understanding props is key to making your React components dynamic, reusable, and easy to manage.

Without them, every component would be isolated, making it impossible to pass data and customize components efficiently.

In this guide, I'll break down:

  • What props are and why they matter
  • How to pass and use props in React
  • Common mistakes and best practices
  • FAQs and useful resources

By the end, you'll have a solid grasp of props and how to use them to make your React applications more powerful and flexible.

What Are Props in React?

Props are a way to pass data from a parent component to a child component in React.

Think of them as function arguments—they allow you to customize a component and make it behave differently based on the values passed.

Here's a simple example of a prop in action:

function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}

function App() {
  return <Greeting name="John" />;
}
Enter fullscreen mode Exit fullscreen mode

Here’s what’s happening:

  • The Greeting component takes props as an argument.
  • It uses props.name to display a personalized greeting.
  • The App component passes "John" as the value for name.
  • When the app runs, it renders: "Hello, John!"

Props allow you to make components reusable by passing different values each time you use them.

How to Pass and Use Props in React

1. Passing Props to a Component

You pass props to a component by adding them as attributes when you use the component.

function UserProfile(props) {
  return (
    <div>
      <h2>{props.username}</h2>
      <p>Age: {props.age}</p>
    </div>
  );
}

function App() {
  return <UserProfile username="Alice" age={25} />;
}
Enter fullscreen mode Exit fullscreen mode

Here, username and age are passed as props to UserProfile, making it display:

Alice  
Age: 25  
Enter fullscreen mode Exit fullscreen mode

2. Using Props Inside a Component

Props are received as an object, so you can access them using dot notation (props.propertyName).

function WelcomeMessage(props) {
  return <p>Welcome, {props.firstName} {props.lastName}!</p>;
}
Enter fullscreen mode Exit fullscreen mode

If WelcomeMessage is used like this:

<WelcomeMessage firstName="John" lastName="Doe" />
Enter fullscreen mode Exit fullscreen mode

It will render:

Welcome, John Doe!
Enter fullscreen mode Exit fullscreen mode

3. Using Destructuring for Cleaner Code

Instead of writing props.something, you can use destructuring to simplify the syntax:

function WelcomeMessage({ firstName, lastName }) {
  return <p>Welcome, {firstName} {lastName}!</p>;
}
Enter fullscreen mode Exit fullscreen mode

Now, it works the same way, but looks cleaner and easier to read.

Passing Functions as Props

Props aren’t limited to just numbers and strings—you can also pass functions to handle events or logic.

function Button({ handleClick }) {
  return <button onClick={handleClick}>Click Me</button>;
}

function App() {
  const showMessage = () => alert("Button clicked!");

  return <Button handleClick={showMessage} />;
}
Enter fullscreen mode Exit fullscreen mode

When the button is clicked, it triggers the showMessage function.

Passing Objects and Arrays as Props

You can also pass objects and arrays as props.

Passing an Object

function UserProfile({ user }) {
  return (
    <div>
      <h2>{user.name}</h2>
      <p>Email: {user.email}</p>
    </div>
  );
}

function App() {
  const userData = { name: "John Doe", email: "john@example.com" };

  return <UserProfile user={userData} />;
}
Enter fullscreen mode Exit fullscreen mode

Passing an Array

function ItemList({ items }) {
  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
}

function App() {
  const shoppingList = ["Apples", "Bananas", "Oranges"];

  return <ItemList items={shoppingList} />;
}
Enter fullscreen mode Exit fullscreen mode

Both examples show how to pass more complex data structures easily with props.

Common Mistakes & Best Practices

Use Default Props

If a prop is missing, you can set default values using defaultProps.

function Welcome({ name = "Guest" }) {
  return <h1>Welcome, {name}!</h1>;
}
Enter fullscreen mode Exit fullscreen mode

If name isn’t provided, it defaults to "Guest".

Avoid Modifying Props

Props are read-only. If you try to modify them inside a component, React will throw an error.

Wrong:

props.name = "New Name"; // ❌ Don't do this!
Enter fullscreen mode Exit fullscreen mode

Right:

If you need to modify data, use state instead.

Use Prop Types for Validation

To avoid bugs, use prop-types to enforce expected prop types.

import PropTypes from 'prop-types';

function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

Greeting.propTypes = {
  name: PropTypes.string.isRequired
};
Enter fullscreen mode Exit fullscreen mode

This ensures name is always a string.

FAQs

1. Can I pass props to functional components only?

No, props work in both functional and class components.

2. Can props be changed inside a component?

No, props are immutable. If you need to change data, use state instead.

3. How do I pass multiple props?

Just separate them with spaces:

<Component name="John" age={30} email="john@example.com" />
Enter fullscreen mode Exit fullscreen mode

4. What happens if I don't pass a required prop?

React won’t break, but it might cause unexpected behavior. Use default props or prop-types to handle it.

Further Resources

Final Thoughts

Props are one of the most fundamental concepts in React. They allow you to make your components dynamic, reusable, and interactive.

By mastering props, you’ll be able to pass data efficiently, keep your code organized, and build scalable React applications.

So, how do you plan to use props in your next React project? 🚀

Top comments (0)