sr✳SHUBHAM RAJFRONTEND ENGINEER
FULL TECHNICAL GUIDEFoundation3 min read

How does React decide whether two components are the same?

React considers a component's type and position in the tree, with keys providing explicit identity among siblings.

React#identity#state
THE ANSWER / PLAIN ENGLISH

The idea to remember.

React considers a component's type and position in the tree, with keys providing explicit identity among siblings. Changing identity can reset local state, even if the new screen looks similar.

From first example to real project.

Start with the smallest working idea, examine a more detailed example, then look at a real application pattern. Adapt dependencies, error handling and data models to your project.

Basic: a stable list

01 / BEGINNER

A stable ID lets React keep each row's identity.

JSX / EXAMPLE
const todos = [{ id: 1, text: 'Read docs' }, { id: 2, text: 'Build app' }];
function TodoList() {
  return <ul>{todos.map(todo => <li key={todo.id}>{todo.text}</li>)}</ul>;
}

Intermediate: intentional reset

02 / INTERMEDIATE

Changing a key tells React this is a new form, so its local state resets.

JSX / EXAMPLE
function ProfileEditor({ person }) {
  return <ProfileForm key={person.id} person={person} />;
}

Real scenario: reorderable tasks

03 / REAL SCENARIO

Use database IDs, not array positions, when tasks can move.

JSX / EXAMPLE
function TaskBoard({ tasks, onMove }) {
  return tasks.map(task => (
    <TaskCard key={task.id} task={task} onMove={() => onMove(task.id)} />
  ));
}

Try it in your own words.

Explain how does React decide whether two components are the same without looking at the code. Then modify the intermediate example, describe one trade-off and identify when the real-world pattern fits.

Keep learning here.

Explore more in-depth guides, exercises and related interview questions in this library.

Browse React study guides ↗
← Back to question library

Have something
in mind?

Start a conversation