Logo
READLEARNKNOWCONNECT
Back to Lessons

    Page

  • - What Are Props?
  • - Passing Multiple Props
  • - Destructuring Props
  • - Default Props
  • - One-Way Data Flow
  • - Props Can Pass Anything
  • - Mini Project Step

5Props and Data Flow in React

Beginner16m

What Are Props?

Props (short for properties) are how we send data from one component to another in React. Props are read-only, which means a component receiving props can't change them directly.

jsx
function Welcome(props) {
  return <h2>Hello, {props.name}!</h2>
}

function App() {
  return <Welcome name="Chrise" />
}

Passing Multiple Props

You can pass as many props as you like to a component. They work just like function parameters.

jsx
function UserCard(props) {
  return (
    <div>
      <h3>{props.name}</h3>
      <p>Age: {props.age}</p>
    </div>
  )
}

function App() {
  return <UserCard name="Sarah" age={25} />
}

Destructuring Props

Instead of writing props.name or props.age everywhere, we can clean up our code using destructuring.

jsx
function UserCard({ name, age }) {
  return (
    <div>
      <h3>{name}</h3>
      <p>Age: {age}</p>
    </div>
  )
}

Default Props

If a prop isn't provided, we can give it a default value so the component still works.

jsx
function Button({ text = "Click Me" }) {
  return <button>{text}</button>
}

function App() {
  return (
    <>
      <Button text="Submit" />
      <Button />
    </>
  )
}

One-Way Data Flow

In React, data flows in one direction — from parent to child using props. This helps keep your UI predictable.

text
App → sends data → Child Component → displays it

Props Can Pass Anything

  • Strings – `<Card title="Hello" />`
  • Numbers – `<Price amount={39.99} />`
  • Arrays – `<List items={[1,2,3]} />`
  • Objects – `<Profile user={{name: 'Ada'}} />`
  • Functions – `<Button onClick={handleClick} />`

Mini Project Step

Inside your `components` folder, create a new component called `FeatureCard.jsx`. It should accept `title` and `description` as props and display them nicely. Import and use three copies of FeatureCard in `App.jsx`, each with different content.

jsx
// FeatureCard.jsx
function FeatureCard({ title, description }) {
  return (
    <div>
      <h3>{title}</h3>
      <p>{description}</p>
    </div>
  )
}
export default FeatureCard;

// App.jsx
import FeatureCard from './components/FeatureCard'

function App() {
  return (
    <div>
      <FeatureCard title="Fast Learning" description="Practice-based lessons." />
      <FeatureCard title="Modern Tools" description="We use Vite + React." />
      <FeatureCard title="Clean Code" description="Reusable components everywhere." />
    </div>
  )
}
export default App;
creating and using functional components
state management with usestate