Bird
Raised Fist0
Reactframework~20 mins

Component organization in React - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
React Component Organizer
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this React component?

Consider this React component structure. What will be rendered on the screen?

React
import React from 'react';

function Header() {
  return <header><h1>Welcome</h1></header>;
}

function Footer() {
  return <footer><p>Goodbye</p></footer>;
}

function Page() {
  return (
    <main>
      <Header />
      <section><p>Main content</p></section>
      <Footer />
    </main>
  );
}

export default Page;
A<header><h1>Welcome</h1></header><section><p>Main content</p></section><footer><p>Goodbye</p></footer>
B<main><section><p>Main content</p></section></main>
C<main><header><h1>Welcome</h1></header><section><p>Main content</p></section><footer><p>Goodbye</p></footer></main>
D<header><h1>Welcome</h1></header><main><section><p>Main content</p></section></main><footer><p>Goodbye</p></footer>
Attempts:
2 left
💡 Hint

Look at how components are nested inside the Page component's return statement.

📝 Syntax
intermediate
2:00remaining
Which option correctly defines a reusable button component in React?

Which code snippet correctly defines a reusable button component that accepts a label prop and calls onClick when clicked?

A
function Button({ label, onClick }) {
  return &lt;button onClick={onClick}&gt;{label}&lt;/button&gt;;
}
B
function Button(label, onClick) {
  return &lt;button onClick={onClick}&gt;{label}&lt;/button&gt;;
}
C
const Button = (props) =&gt; {
  return &lt;button&gt;{props.label}&lt;/button&gt;;
}
D
function Button({ label }) {
  return &lt;button onClick={onClick}&gt;{label}&lt;/button&gt;;
}
Attempts:
2 left
💡 Hint

Remember that props are passed as an object and event handlers must be assigned properly.

🔧 Debug
advanced
2:00remaining
Why does this React component fail to update the displayed count?

Examine the code below. Why does clicking the button not update the displayed count?

React
import React, { useState } from 'react';

function Counter() {
  let count = 0;

  function increment() {
    count += 1;
  }

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Add</button>
    </div>
  );
}

export default Counter;
ABecause the button element is missing an onClick attribute.
BBecause the increment function is not called when the button is clicked.
CBecause useState is used incorrectly and should be replaced with useEffect.
DBecause 'count' is a local variable and React does not track changes to it for re-rendering.
Attempts:
2 left
💡 Hint

Think about how React tracks changes to update the UI.

❓ lifecycle
advanced
2:00remaining
What happens when this React component uses useEffect with an empty dependency array?

Consider this component:

import React, { useEffect } from 'react';

function Logger() {
  useEffect(() => {
    console.log('Component mounted');
  }, []);

  return <div>Check console</div>;
}

export default Logger;

What is the behavior of the console log?

AThe message 'Component mounted' logs only once when the component first appears.
BThe message never logs because the dependency array is empty.
CThe message logs every time the component re-renders.
DThe message logs repeatedly in an infinite loop.
Attempts:
2 left
💡 Hint

Recall how useEffect behaves with an empty dependency array.

🧠 Conceptual
expert
2:00remaining
How does splitting a large React component into smaller components improve the app?

Which of the following is the best explanation for why organizing UI into smaller React components is beneficial?

AIt forces all state to be managed globally, simplifying data flow.
BIt improves code reuse, readability, and makes testing and maintenance easier.
CIt reduces the total number of components, making the app faster to load.
DIt eliminates the need for props by keeping all logic in one place.
Attempts:
2 left
💡 Hint

Think about how smaller parts help manage complexity.

Practice

(1/5)
1. What is the main benefit of organizing React components by their role or feature?
easy
A. It makes the app run faster
B. It automatically fixes bugs in the code
C. It reduces the size of the final app bundle
D. It keeps the code clean and easier to maintain

Solution

  1. Step 1: Understand component organization purpose

    Organizing components by role or feature helps keep the codebase structured and clean.
  2. Step 2: Identify the main benefit

    This organization makes the code easier to read, maintain, and update over time.
  3. Final Answer:

    It keeps the code clean and easier to maintain -> Option D
  4. Quick Check:

    Clean code = B [OK]
Hint: Think about code clarity and maintenance benefits [OK]
Common Mistakes:
  • Confusing organization with app speed
  • Assuming organization reduces bundle size
  • Believing organization fixes bugs automatically
2. Which of the following is the correct way to define a simple functional React component named Button?
easy
A. function Button() { return Click me; }
B. class Button extends React.Component { render() { return Click me; } }
C. const Button = () => { Click me }
D. function Button() { Click me }

Solution

  1. Step 1: Check functional component syntax

    A functional component returns JSX inside the function body using return statement.
  2. Step 2: Identify correct syntax

    function Button() { return Click me; } correctly defines a function returning JSX. const Button = () => { Click me } misses return. class Button extends React.Component { render() { return Click me; } } is a class component, not functional.
  3. Final Answer:

    function Button() { return <button>Click me</button>; } -> Option A
  4. Quick Check:

    Functional component needs return [OK]
Hint: Functional components must return JSX explicitly [OK]
Common Mistakes:
  • Omitting return statement in arrow functions
  • Confusing class and functional component syntax
  • Not returning JSX from the function
3. Given the code below, what will be rendered on the screen?
function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

function App() {
  return <Greeting name="Alice" />;
}
medium
A. Error: name is undefined
B. Hello, name!
C.

Hello, Alice!

D.

Solution

  1. Step 1: Understand props usage in Greeting

    The Greeting component receives a prop called name and uses it inside JSX to display a greeting.
  2. Step 2: Check how App uses Greeting

    App passes the string "Alice" as the name prop, so Greeting renders <h1>Hello, Alice!</h1>.
  3. Final Answer:

    <h1>Hello, Alice!</h1> -> Option C
  4. Quick Check:

    Props passed correctly = C [OK]
Hint: Props replace placeholders with actual values [OK]
Common Mistakes:
  • Thinking props are not passed automatically
  • Expecting literal 'name' string instead of value
  • Confusing JSX tags with strings
4. Identify the error in this React component organization:
function Header() {
  return <header>Welcome</header>;
}

function App() {
  return (
    <div>
      <Header />
      <Footer />
    </div>
  );
}
medium
A. Footer component is used but not defined or imported
B. Header component should be a class component
C. App component must return a single element without div
D. Header component should not use semantic tags

Solution

  1. Step 1: Check component usage in App

    App uses <Header /> and <Footer /> components inside a div.
  2. Step 2: Verify component definitions

    Header is defined, but Footer is neither defined nor imported, causing an error.
  3. Final Answer:

    Footer component is used but not defined or imported -> Option A
  4. Quick Check:

    Undefined component usage = A [OK]
Hint: All used components must be defined or imported [OK]
Common Mistakes:
  • Assuming class components are required
  • Thinking multiple elements need no wrapper
  • Believing semantic tags cause errors
5. You want to organize a React app with a main Dashboard component that uses smaller components like Sidebar, Content, and Footer. Which approach best follows good component organization?
hard
A. Put all JSX for Sidebar, Content, and Footer inside Dashboard's single file
B. Create separate files for Sidebar, Content, and Footer components and import them into Dashboard
C. Write Sidebar, Content, and Footer as functions inside Dashboard component function
D. Combine Sidebar and Footer into one component and Content separately, all in Dashboard file

Solution

  1. Step 1: Understand component reusability and clarity

    Separating components into their own files makes code easier to read, reuse, and maintain.
  2. Step 2: Evaluate options for organization

    Create separate files for Sidebar, Content, and Footer components and import them into Dashboard creates separate files and imports them, which is best practice. Other options mix concerns or reduce clarity.
  3. Final Answer:

    Create separate files for Sidebar, Content, and Footer components and import them into Dashboard -> Option B
  4. Quick Check:

    Separate files for components = A [OK]
Hint: Separate components into files for clarity and reuse [OK]
Common Mistakes:
  • Putting all code in one file making it messy
  • Defining components inside other components unnecessarily
  • Combining unrelated components reducing modularity
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