Bird
Raised Fist0
Reactframework~20 mins

Rendering lists in React - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
React List Master
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 that renders a list of fruits:

function FruitList() {
  const fruits = ['Apple', 'Banana', 'Cherry'];
  return (
    <ul>
      {fruits.map((fruit, index) => <li key={index}>{fruit}</li>)}
    </ul>
  );
}

What will be rendered in the browser?

React
function FruitList() {
  const fruits = ['Apple', 'Banana', 'Cherry'];
  return (
    <ul>
      {fruits.map((fruit, index) => <li key={index}>{fruit}</li>)}
    </ul>
  );
}
A<ul><li>AppleBananaCherry</li></ul>
B<ul><li>0</li><li>1</li><li>2</li></ul>
C<ul><li>Apple</li><li>Banana</li><li>Cherry</li></ul>
D<ul><li>fruit</li><li>fruit</li><li>fruit</li></ul>
Attempts:
2 left
💡 Hint

Look at what is inside the <li> tags inside the map function.

📝 Syntax
intermediate
2:00remaining
Which option correctly renders a list of numbers in React?

You want to render a list of numbers from 1 to 3 in React. Which code snippet will work without errors and render the numbers as list items?

A
const numbers = [1, 2, 3];
return &lt;ul&gt;{numbers.map(n =&gt; &lt;li key={n}&gt;{n}&lt;/li&gt;)}&lt;/ul&gt;;
B
const numbers = [1, 2, 3];
return &lt;ul&gt;{numbers.map(n =&gt; &lt;li&gt;{n}&lt;/li&gt;)}&lt;/ul&gt;;
C
const numbers = [1, 2, 3];
return &lt;ul&gt;{numbers.forEach(n =&gt; &lt;li key={n}&gt;{n}&lt;/li&gt;)}&lt;/ul&gt;;
D
const numbers = [1, 2, 3];
return &lt;ul&gt;{numbers.map((n, index) =&gt; &lt;li key={index}&gt;{n}&lt;/li&gt;)}&lt;/ul&gt;;
Attempts:
2 left
💡 Hint

Remember that map returns a new array, but forEach does not.

🔧 Debug
advanced
2:00remaining
Why does this React list rendering cause a warning?

Look at this React component:

function Colors() {
  const colors = ['red', 'green', 'blue'];
  return (
    <ul>
      {colors.map(color => <li>{color}</li>)}
    </ul>
  );
}

When running this code, React shows a warning about keys. What is the cause?

React
function Colors() {
  const colors = ['red', 'green', 'blue'];
  return (
    <ul>
      {colors.map(color => <li>{color}</li>)}
    </ul>
  );
}
AThe component is missing a wrapping div around the list.
BThe array 'colors' is empty, so nothing renders.
CThe map function is missing a return statement, causing a syntax error.
DEach list item is missing a unique 'key' prop, which React needs to track items efficiently.
Attempts:
2 left
💡 Hint

React requires a special prop on list items to help identify them uniquely.

❓ state_output
advanced
2:00remaining
What is the output after clicking the button in this React component?

Consider this React component that renders a list and a button to add an item:

import { useState } from 'react';

function TodoList() {
  const [todos, setTodos] = useState(['Task 1', 'Task 2']);

  function addTodo() {
    setTodos([...todos, 'Task 3']);
  }

  return (
    <div>
      <ul>
        {todos.map((todo, i) => <li key={i}>{todo}</li>)}
      </ul>
      <button onClick={addTodo}>Add Task</button>
    </div>
  );
}

What will the list show after clicking the 'Add Task' button once?

React
import { useState } from 'react';

function TodoList() {
  const [todos, setTodos] = useState(['Task 1', 'Task 2']);

  function addTodo() {
    setTodos([...todos, 'Task 3']);
  }

  return (
    <div>
      <ul>
        {todos.map((todo, i) => <li key={i}>{todo}</li>)}
      </ul>
      <button onClick={addTodo}>Add Task</button>
    </div>
  );
}
A<ul><li>Task 1</li><li>Task 2</li><li>Task 3</li></ul>
B<ul><li>Task 1</li><li>Task 2</li></ul>
C<ul><li>Task 3</li></ul>
D<ul><li>Task 1</li><li>Task 2</li><li>Task 3</li><li>Task 3</li></ul>
Attempts:
2 left
💡 Hint

Think about how the state updates when the button is clicked.

🧠 Conceptual
expert
2:00remaining
Why is using array index as key in list rendering sometimes problematic?

In React, when rendering lists, developers often use the array index as the key prop like this:

{items.map((item, index) => <li key={index}>{item}</li>)}

Why can this cause problems in some cases?

AUsing index as key causes syntax errors in React and prevents rendering.
BUsing index as key can cause incorrect UI updates when list items are reordered, inserted, or deleted because keys should uniquely identify items across renders.
CUsing index as key makes React render the list items twice, causing performance issues.
DUsing index as key disables React's ability to handle events on list items.
Attempts:
2 left
💡 Hint

Think about what happens when the order of items changes but keys stay the same.

Practice

(1/5)
1. What is the main purpose of using the map() method when rendering lists in React?
easy
A. To filter out unwanted items from the list
B. To sort the list items alphabetically
C. To transform an array of data into an array of React elements
D. To add styles to each list item

Solution

  1. Step 1: Understand the role of map() in React

    The map() method is used to take an array of data and create a new array by transforming each item. In React, this means turning data into React elements.
  2. Step 2: Identify what map() does in rendering lists

    When rendering lists, map() creates a React element for each item, which React can then display on the screen.
  3. Final Answer:

    To transform an array of data into an array of React elements -> Option C
  4. Quick Check:

    map() creates elements from data [OK]
Hint: Remember: map() turns data into elements [OK]
Common Mistakes:
  • Thinking map() sorts or filters data
  • Using map() without returning elements
  • Confusing map() with forEach()
2. Which of the following is the correct way to add a unique key to list items in React?
easy
A. {items.map(item => <li key={item.id}>{item.name}</li>)}
B. {items.map(item => <li key={Math.random()}>{item.name}</li>)}
C. {items.map(item => <li key="index">{item.name}</li>)}
D. {items.map(item => <li>{item.name}</li>)}

Solution

  1. Step 1: Understand the importance of keys in React lists

    Keys help React identify which items changed, added, or removed. They must be unique and stable for each list item.
  2. Step 2: Evaluate each option for key usage

    {items.map(item => <li>{item.name}</li>)} has no key, so React will warn. {items.map(item => <li key={item.id}>{item.name}</li>)} uses a unique id from the item, which is correct. {items.map(item => <li key="index">{item.name}</li>)} uses a string 'index' for all keys, which is not unique. {items.map(item => <li key={Math.random()}>{item.name}</li>)} uses Math.random(), which changes every render and is unstable.
  3. Final Answer:

    {items.map(item => <li key={item.id}>{item.name}</li>)} -> Option A
  4. Quick Check:

    Unique stable keys = {items.map(item => <li key={item.id}>{item.name}</li>)} [OK]
Hint: Use unique stable keys from data, not random or fixed strings [OK]
Common Mistakes:
  • Omitting the key prop entirely
  • Using index or random values as keys
  • Using non-unique keys causing rendering bugs
3. What will be the output of this React code snippet?
const fruits = ['Apple', 'Banana', 'Cherry'];

function FruitList() {
  return (
    <ul>
      {fruits.map((fruit, index) => <li key={index}>{fruit}</li>)}
    </ul>
  );
}
medium
A. SyntaxError due to missing keys
B.
  • Apple
  • Banana
  • Cherry
C.
  • 0
  • 1
  • 2
D. Empty list rendered

Solution

  1. Step 1: Understand the map function output

    The map() creates a list item for each fruit with the fruit name as content.
  2. Step 2: Check the key usage and rendering

    Using index as key is allowed (though not ideal), so React renders the list with fruit names inside <li> tags.
  3. Final Answer:

    <ul><li>Apple</li><li>Banana</li><li>Cherry</li></ul> -> Option B
  4. Quick Check:

    map() renders fruit names as list items [OK]
Hint: map() returns elements with content, keys don't affect output text [OK]
Common Mistakes:
  • Confusing keys with displayed content
  • Expecting errors from using index keys
  • Thinking map returns indexes instead of values
4. Identify the error in this React list rendering code:
const numbers = [1, 2, 3];

function NumberList() {
  return (
    <ul>
      {numbers.map(number => <li>number</li>)}
    </ul>
  );
}
medium
A. Missing key prop on list items
B. numbers array is empty, so no output
C. Syntax error due to arrow function
D. The word 'number' is rendered literally, not the variable

Solution

  1. Step 1: Analyze the JSX inside map

    The code writes <li>number</li> which renders the literal text 'number', not the variable value.
  2. Step 2: Identify how to fix variable rendering

    To render the variable, it should be inside curly braces: <li>{number}</li>.
  3. Final Answer:

    The word 'number' is rendered literally, not the variable -> Option D
  4. Quick Check:

    JSX needs curly braces for variables [OK]
Hint: Use curly braces {} to render variables in JSX [OK]
Common Mistakes:
  • Forgetting curly braces around variables
  • Ignoring missing key warnings
  • Assuming array is empty without checking
5. You have a list of user objects with possible duplicate IDs:
const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 1, name: 'Carol' }
];

function UserList() {
  return (
    <ul>
      {users.map((user, index) => <li key={`${user.id}-${index}`}>{user.name}</li>)}
    </ul>
  );
}

What problem can occur and how to fix it?
hard
A. Duplicate keys cause rendering issues; use unique keys like index or combined values
B. No problem; React handles duplicate keys automatically
C. Syntax error due to duplicate IDs in objects
D. List will render only first two users ignoring duplicates

Solution

  1. Step 1: Understand React's key requirement

    Keys must be unique to help React track items. Duplicate keys cause rendering bugs or warnings.
  2. Step 2: Identify the duplicate key issue in code

    Two users share id=1, so keys are not unique. This can confuse React during updates.
  3. Step 3: Suggest a fix for unique keys

    Use a unique key like combining id and index: key={`${user.id}-${index}`} or a unique identifier.
  4. Final Answer:

    Duplicate keys cause rendering issues; use unique keys like index or combined values -> Option A
  5. Quick Check:

    Unique keys prevent rendering bugs [OK]
Hint: Keys must be unique; combine id with index if duplicates exist [OK]
Common Mistakes:
  • Ignoring duplicate keys causing UI bugs
  • Assuming React auto-fixes duplicate keys
  • Using only index keys without data context
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