Pregunta de entrevista para Desarrollador React

¿Por qué React necesita una key en los elementos de una lista y qué se rompe de verdad si usas el índice del array?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Las keys le dicen a React qué elemento de la lista nueva corresponde a cuál de la lista vieja, para que pueda mover, conservar o eliminar nodos del DOM y su estado en lugar de emparejarlos solo por posición. Los índices del array solo funcionan en listas estáticas. Si los elementos se reordenan, se inserta uno al principio o se borra alguno, el índice de un elemento dado cambia, React reutiliza el nodo equivocado y el estado, como el valor de un input, acaba en la fila incorrecta.

Por qué lo preguntan los entrevistadores

Parece una pregunta de principiante, pero las respuestas separan a la gente rápido. La mayoría dice que las keys ayudan al rendimiento y se queda ahí. El entrevistador quiere oír que las keys van de identidad y de preservar el estado, no solo de velocidad, y que sabes nombrar el fallo concreto con keys por índice. También es una comprobación rápida de si has depurado un bug real de listas o solo has quitado un aviso de la consola.

Cómo estructurar tu respuesta

  • Define la key como identidad, no como una pista de rendimiento.
  • Explica cómo el diff empareja hijos viejos y nuevos por key.
  • Da el bug concreto del índice en una lista reordenada o filtrada.
  • Di qué usas como key y qué evitas.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Una key es la forma en que React responde a la pregunta: ¿es este el mismo elemento que vi en el render anterior? Sin ella empareja los hijos por posición, así que cuando una fila se mueve React cree que cambió el contenido y parchea el nodo existente en lugar de moverlo. Con una key estable sabe que el elemento se movió, conserva su nodo del DOM y su estado, y reordena. La trampa del índice es que el índice describe la posición, no el elemento. Me pasó en una tabla donde cada fila tenía un checkbox y un campo de notas. Borras la fila dos y todas las de abajo suben un índice, así que React empareja los nodos equivocados y acabas con las notas de otra persona en tu fila. Parece un bug de datos y es un bug de keys. Así que uso el id estable que venga con los datos, normalmente el id de la base de datos. Si de verdad no hay ninguno, genero un id cuando se crea el elemento y no durante el render, porque generarlo en el render te da una key nueva en cada pasada y remonta la lista entera.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cuándo está bien usar el índice del array como key?
  • ¿Qué pasa si dos hermanos comparten la misma key?
  • ¿Cómo reiniciarías a propósito el estado de un componente usando una key?

Más preguntas para Desarrollador React

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot