React utilise la key pour identifier un élément entre deux rendus et lui rattacher son état local.

Avec key={index}, la clé représente la position, pas l’identité de la donnée. Après un tri, une insertion ou une suppression, une même position peut contenir un autre élément. React voit pourtant la même clé et le même type de composant : il réutilise donc l’instance existante et conserve son état, mais lui fournit les props du nouvel élément.

Exemple après suppression de A :

Avant : key 0 A (coché), key 1 B (non coché)
Après : key 0 B

Comme la clé 0 est conservée, B récupère l’état « coché » de A.

Il faut utiliser une clé stable liée à l’identité de la donnée :

items.map(item => )

L’index n’est sûr que pour une liste réellement statique, sans réordonnancement, insertion ni suppression.