Lesson 25 — Ultimate: todo app
Boss level: a complete feature
A real todo app needs state for the list and the input, adding with validation, toggling an item immutably (map to a new array and copy only the changed item), and a derived "remaining" count. Each item is an object like { text, done }, and the style changes when it is done.
setItems(items.map((x, j) => (j === idx ? { ...x, done: !x.done } : x)));
Why it matters: this is a full feature end to end — the same steps you will use for carts, inboxes and task boards.
Count the remaining items and make clicking an item toggle it. After adding A, B, C and clicking A: "2 left" and A is crossed out.
A quick 3-question quiz on this lesson — instant feedback.
Ready for more? Optional paid resources that pick up where this lesson leaves off.
Some links on this page are affiliate links: we may earn a commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases.
Project-based React Foundations courses if you want a structured paid path after the free lessons. Wait for a sale — prices drop often.
Browse on Udemy →Search Amazon for React Foundations books — check the publication year so the examples match current versions.
Search Amazon →