React Fundamentals

Lesson 5 of 6

Rendering Lists and Building Forms

Rendering lists

Use .map() to turn an array of data into an array of JSX elements, each one needs a unique key prop so React can track it across re-renders.

function TaskList({ tasks }) {
  return (
    <ul>
      {tasks.map((task) => (
        <li key={task.id}>{task.text}</li>
      ))}
    </ul>
  );
}

WARNING

Prefer a stable id for key, using the array index breaks when items are reordered, inserted, or removed, React can confuse which item is which.

Controlled forms

A controlled input gets its displayed value from state, and updates that state on every keystroke:

function TaskForm({ onAdd }) {
  const [text, setText] = useState('');

  function handleSubmit(event) {
    event.preventDefault();
    onAdd(text);
    setText('');
  }

  return (
    <form onSubmit={handleSubmit}>
      <input value={text} onChange={(e) => setText(e.target.value)} />
      <button type="submit">Add</button>
    </form>
  );
}

event.preventDefault() stops the browser's default full-page reload on form submit, letting React handle it instead.

📝 Lists & Forms Quiz

Passing score: 70%
  1. 1.In a controlled input, what determines the input's displayed value?

  2. 2.When rendering a list with .map(), each element needs a unique ____ prop.

  3. 3.Using the array index as a key is always safe, even when items can be reordered or removed.