Bird
Raised Fist0
Reactframework~30 mins

State vs props comparison in React - Hands-On Comparison

Choose your learning style10 modes available
State vs Props Comparison in React
📖 Scenario: You are building a simple React app that shows a user's name and allows changing it inside a child component. This will help you understand the difference between state and props.
🎯 Goal: Create a React app with a parent component that holds a user's name in state. Pass the name as props to a child component. The child component will display the name and have a button to change it by calling a function passed as props.
📋 What You'll Learn
Use React functional components with hooks
Create a Parent component with a name state variable
Pass name and a function to update it as props to Child
In Child, display the name from props
Add a button in Child that changes the name by calling the passed function
💡 Why This Matters
🌍 Real World
Managing state and passing props is fundamental in React apps for building interactive user interfaces.
💼 Career
Understanding state vs props is essential for React developers to build maintainable and scalable components.
Progress0 / 4 steps
1
Create Parent component with name state
Create a React functional component called Parent. Inside it, use useState to create a state variable called name with initial value "Alice". Export the Parent component.
React
Hint

Use const [name, setName] = useState("Alice") inside the Parent function.

2
Add Child component and pass props
Inside the Parent component, create a Child component that accepts name and changeName as props. Render Child inside Parent and pass name and setName as changeName prop.
React
Hint

Define Child as a function with { name, changeName } props. Render <Child name={name} changeName={setName} /> inside Parent.

3
Display name and add button in Child
In the Child component, display the name prop inside a <p> tag. Add a <button> that when clicked calls changeName with the value "Bob".
React
Hint

Use <p>{name}</p> to show the name. Add a button with onClick={() => changeName("Bob")}.

4
Export Child and finalize Parent rendering
Export the Child component. In the Parent component, wrap the Child component inside a <main> tag for semantic HTML.
React
Hint

Use export function Child and wrap <Child /> inside <main> in Parent.

Practice

(1/5)
1. Which of the following best describes the difference between state and props in React?
easy
A. Props can change inside a component; state is fixed.
B. State is internal and can change; props are external and read-only.
C. State and props are both used to pass data from parent to child.
D. Props are used only for styling; state holds all data.

Solution

  1. Step 1: Understand what state is

    State is data managed inside a component that can change over time.
  2. Step 2: Understand what props are

    Props are data passed from a parent component to a child component and cannot be changed by the child.
  3. Final Answer:

    State is internal and can change; props are external and read-only. -> Option B
  4. Quick Check:

    State changes internally, props are read-only from parent [OK]
Hint: State changes inside; props come from outside [OK]
Common Mistakes:
  • Thinking props can be changed inside the child component
  • Confusing state as data passed from parent
  • Believing props hold styling only
2. Which of the following is the correct way to pass a prop named title with value "Hello" to a child component Header?
easy
A. <Header title="Hello" />
B. <Header {title: "Hello"} />
C. <Header title={Hello} />
D. <Header title: "Hello" />

Solution

  1. Step 1: Recall JSX syntax for passing props

    Props are passed as attributes inside the component tag, like HTML attributes.
  2. Step 2: Check correct syntax for string prop

    Use quotes around string values: title="Hello".
  3. Final Answer:

    <Header title="Hello" /> -> Option A
  4. Quick Check:

    Props use attribute syntax with quotes for strings [OK]
Hint: Use attribute="value" syntax for string props [OK]
Common Mistakes:
  • Using curly braces without variable for string
  • Using object-like syntax inside JSX tag
  • Using colon instead of equals sign
3. Consider this React component code:
function Counter({ initial }) {
  const [count, setCount] = React.useState(initial);
  return <div>Count: {count}</div>;
}

// Usage:
<Counter initial={5} />

What will be displayed when this component renders?
medium
A. Count: 0
B. Count: undefined
C. Count: 5
D. Count: initial

Solution

  1. Step 1: Understand prop usage

    The prop initial is passed with value 5 to the Counter component.
  2. Step 2: Understand state initialization

    The state count is initialized with initial, so count starts at 5.
  3. Final Answer:

    Count: 5 -> Option C
  4. Quick Check:

    State initialized from prop value 5 [OK]
Hint: State starts with prop value passed in [OK]
Common Mistakes:
  • Assuming state starts at 0 by default
  • Printing the prop name instead of value
  • Confusing undefined with missing prop
4. What is wrong with this React component code?
function Message(props) {
  props.text = "Hello";
  return <div>{props.text}</div>;
}
medium
A. You cannot assign a new value to props inside a component.
B. The return statement is missing parentheses.
C. The component should use state instead of props.
D. The component must be a class to modify props.

Solution

  1. Step 1: Understand props immutability

    Props are read-only and cannot be changed inside the component.
  2. Step 2: Identify the error in code

    Assigning props.text = "Hello" tries to modify props, which is not allowed.
  3. Final Answer:

    You cannot assign a new value to props inside a component. -> Option A
  4. Quick Check:

    Props are immutable inside components [OK]
Hint: Props are read-only; never assign to them [OK]
Common Mistakes:
  • Trying to change props directly
  • Confusing props with state
  • Thinking only class components can modify props
5. You want a component to display a counter that starts from a value passed by its parent and can be incremented by the user. Which approach correctly uses state and props?
hard
A. Modify the prop value directly when user clicks increment.
B. Keep counter value only in props and pass updated props from child to parent.
C. Use props only and update them inside the component.
D. Initialize state with the prop value; update state on user action; do not modify props.

Solution

  1. Step 1: Understand data flow

    Props provide initial data from parent; state holds data that changes inside the component.
  2. Step 2: Apply correct usage

    Initialize state with prop value, then update state on user actions. Props remain unchanged.
  3. Final Answer:

    Initialize state with the prop value; update state on user action; do not modify props. -> Option D
  4. Quick Check:

    State changes internally; props stay read-only [OK]
Hint: Use props for initial value, state for changes [OK]
Common Mistakes:
  • Trying to change props directly
  • Using props to hold changing data
  • Passing updated data from child to parent incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard