This covers a critical concept for efficient list rendering and avoiding bugs.
01
01
Understand the problem
listskeysperformancereconciliation
02
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Stuck? AI Nudge Available
Get a conceptual hint to guide your logic without spoiling the final implementation.
03
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Read the code
Stable keys preserve per-row state
import { useState } from "react";
export default function App() {
const [items, setItems] = useState([
{ id: "a", name: "Ada" },
{ id: "b", name: "Grace" },
{ id: "c", name: "Lin" },
]);
const shuffle = () => setItems((xs) => [...xs].reverse());
return (
<div style={{ padding: 24, fontFamily: "system-ui" }}>
<button onClick={shuffle}>Reverse</button>
<ul>
{items.map((it) => (
<li key={it.id}> {/* stable id, not index */}
{it.name} <input placeholder="type then reverse" />
</li>
))}
</ul>
</div>
);
}05
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.